我试图制作符合以下条件的正则表达式:
所以我希望结果如下:
我测试了以下与标准2匹配的正则表达式,但仍无法找到符合标准1和3的解决方案。
^(?!.*[^a-zA-Z0-9])(?=.*\d)(?=.*[a-zA-Z]).{3}$
我试过这个但是在case2上失败了。
^(?!.*[^a-zA-Z0-9])(?=.*\d)(?=.*[a-zA-Z]).{3}[a-zA-Z]$
如何结合这些标准?谢谢!
答案 0 :(得分:1)
无需使用3或4个字符的复杂功能:
/^(?:[a-z0-9](?:[0-9][a-z]|[a-z][0-9])|[0-9][a-z]{2}|[a-z][0-9]{2})[a-z]$/i
或
/^(?:[a-z](?:[0-9][a-z0-9]|[a-z][0-9])|[0-9](?:[a-z][a-z0-9]|[0-9][a-z]))[a-z]$/i
答案 1 :(得分:1)
您可以使用
^(?=.{0,2}[0-9])(?=.{0,2}[a-zA-Z])[0-9a-zA-Z]{3}[a-zA-Z]$
请参阅regex demo
<强>详情
^
- 字符串开头(?=.{0,2}[0-9])
- 0到2个字符后必须有一个ASCII数字(?=.{0,2}[a-zA-Z])
- 0到2个字符后必须有一个ASCII字母[0-9a-zA-Z]{3}
- 3个ASCII字母数字[a-zA-Z]
- ASCII字母$
- 字符串结尾