我想要一个只有字母数字值的正则表达式模式,不仅包括字母和数字,最小长度= 4,最大长度= 15,
我尝试使用/^[a-zA-Z0-9]{4,15}$/
,但此模式也只允许使用字母和数字。
请帮帮我
答案 0 :(得分:2)
这应该可以解决问题:
^(?=^.{4,15}$)([a-zA-Z]+[0-9][a-zA-Z0-9]*|[0-9]+[a-zA-Z][a-zA-Z0-9]*)$
请参阅此处的工作示例:http://regexr.com?351ia
说明:(更新:现在有长度检查)
首先,正向前瞻(?=^.{4,15}$)
会检查字符串的长度。
如果你的字符串以字母开头,那么这部分正则表达式用于评估它:
[a-zA-Z]+[0-9][a-zA-Z0-9]*
[a-zA-Z]+
表示字符串以至少一个字母开头[0-9]
然后在某个时候必须有一个数字[a-zA-Z0-9]*
后跟任意数量的数字或字母如果您的字符串以数字开头,则使用正则表达式的第二部分:
[0-9]+[a-zA-Z][a-zA-Z0-9]*
与上述相同,只有这次必须才能成为字符串中的某个字母。
答案 1 :(得分:0)
您可能需要进行双向预测以查找数字和字母,一旦找到数字和字母,匹配将继续,否则不会。
正则表达式:/^(?=.*?[a-zA-Z])(?=.*?[0-9])[a-zA-Z0-9]{4,15}$/
答案 2 :(得分:0)
使用原始字母进行字母数字和长度测试,然后通过测试字符串中的数字后跟alpha或反之亦然来验证字符串是否包含alpha 和数字。
/^[a-z\d]{4,15}$/i.test (s) && /\d[a-z]|[a-z]\d/i.test (s);