Regex 至少有一个具有现有正则表达式的数字

Regex 至少有一个具有现有正则表达式的数字,regex,Regex,我的情况 字母数字值 只允许使用一个空格或连字符 必须至少包含一个数字 不能以空格或连字符开头或结尾 最少2个字符,最多16个字符,不包括空格/连字符 到现在为止,我准备了正则表达式 ^(?=.{2,16}$)([a-zA-Z\d]+)([\s^\-]|[\-^\s]|[a-zA-Z\d]*)([a-z[A-Z\d]+) 它只遗漏了第三点 测试字符串 有效的 无效的 "-test" "test-d f" 您可以将此正则表达式与2个先行条件一起使用: ^(?=(?:[a-zA-Z\d][ -]

我的情况

  • 字母数字值
  • 只允许使用一个空格或连字符

  • 必须至少包含一个数字
  • 不能以空格或连字符开头或结尾
  • 最少2个字符,最多16个字符,不包括空格/连字符
  • 到现在为止,我准备了正则表达式

    ^(?=.{2,16}$)([a-zA-Z\d]+)([\s^\-]|[\-^\s]|[a-zA-Z\d]*)([a-z[A-Z\d]+)
    
    它只遗漏了第三点

    测试字符串 有效的

    无效的

    "-test"
    "test-d f"
    

    您可以将此正则表达式与2个先行条件一起使用:

    ^(?=(?:[a-zA-Z\d][ -]?){2,16}$)(?=[^\d\n]*\d)[a-zA-Z\d]+(?:[ -][a-zA-Z\d]+)?$
    

    注意,
    testone
    是无效字符串,因为它没有任何数字

    正则表达式详细信息:

    • ^
      :开始
    • (?=(?:[a-zA-Z\d][-]?){2,16}$)
      :正向前瞻以确保我们有2到16个长度的字母数字字符
    • (?=\D*\D)
      :正向前瞻以确保我们至少有一个数字
    • [a-zA-Z\d]+(?:[-][a-zA-Z\d]+)?
      :匹配任何以字母数字开头的测试,可以选择后跟单个空格或连字符,以字母数字结尾的测试
    • $
      :结束

    必须至少包含一个数字,您的意思是像
    one
    这样的拼写数字吗?必须至少包含一个数字意味着它必须至少有一个(\d)位。所有都很好,但缺少字符串长度,不包括hypen或空格。
    (?=.{2,16}$)
    将确保长度为2到16,并且还满足其他条件,例如“ex-itshouldpass16”应该通过,但在这里失败。无论如何,谢谢。
    ex-itshouldpass16
    总共有17个字符。是否只计算字母数字?如果是这种情况,则使用:
    ^(?=(?:[a-zA-Z\d][-]){2,16}$(?=[^\d\n]*\d)[a-zA-Z\d]+(?:[-][a-zA-Z\d]+)?$
    ^(?=(?:[a-zA-Z\d][ -]?){2,16}$)(?=[^\d\n]*\d)[a-zA-Z\d]+(?:[ -][a-zA-Z\d]+)?$