我遇到了这个问题,在过去的问题中找不到。
条件:
这是我的作品以及每个作品的问题:
^(?!^\d*$)[a-zA-Z\d]{10}$
^[a-zA-Z0-9]{10}$
我尝试了其他一些符合所有条件,但没有达到10个字符的限制的尝试。
感谢您的帮助。
答案 0 :(得分:5)
您可以再次进行前瞻:
^(?!\d+$)(?![a-zA-Z]+$)[a-zA-Z\d]{10}$
详细信息
^
-字符串的开头(?!\d+$)
-否定的前瞻性,可确保整个字符串不只由数字组成(?![a-zA-Z]+$)
-整个字符串不能全部为字母[a-zA-Z\d]{10}
-10个字母或数字$
-字符串的结尾。答案 1 :(得分:1)
尝试一下:
(?=^.{10}$)^([a-z]+\d[a-z0-9]*|\d+[a-z][a-z0-9]*)$
(?=^.{10}$)^([a-z]+\d[a-z0-9]*|\d+[a-z][a-z0-9]*)$
(?=^.{10}$) # there's exactly 10 characters following
^( | )$ # we match the entire string, containing either:
[a-z]+\d[a-z0-9]* # letters, followed by a number, followed by alphanumerics, or
\d+[a-z][a-z0-9]* # numbers, followed by a letter, followed by alphanumerics
答案 2 :(得分:1)
使用前瞻性查找至少一种您需要的每种字符,并在正则表达式的“常规”部分中指定长度和字符限制:
^(?=.*[a-zA-Z])(?=.*\d)[0-9a-zA-Z]{10}$
(?=.*[a-zA-Z])
-向前看,找到一封信,(?=.*\d)
-向前看,找到一个数字[0-9a-zA-Z]{10}
-恰好10位数字/字母字符