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}$)([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
是无效字符串,因为它没有任何数字
正则表达式详细信息:
:开始^
:正向前瞻以确保我们有2到16个长度的字母数字字符(?=(?:[a-zA-Z\d][-]?){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]+)?$