我需要正则表达式来匹配以下字符串:
12D09
1s909
A3434
a1
3F9
t
888
0
所以,字符串最多有5个字符。它们是数字,其中一个可以是字母,只有一个或零个字母{0,1}。
我试着
/[0-9a-z]{1,5}/i
但是这也允许aaaa
你的正则表达式应该是
'b(?!.*[a-z].*[a-z])[a-z0-9]{1,5}'b
'b
是一个词边界,这些锚对于避免长字符串的部分匹配很重要,如果您想在更长的字符串中匹配此模式,这是正确的选择。如果这些模式是完整的字符串,还可以使用^(?!.*[a-z].*[a-z])[a-z0-9]{1,5}$
^
为串的起点锚点,$
为串的终点锚点。负向前看
(?!.*[a-z].*[a-z])
不匹配任何东西,它是一个零宽度断言。它确保字符串中不存在两个字母。真正的模式
[a-z0-9]{1,5}
匹配1到5个字母或数字。这部分也允许多个字母,但如果是负数,则会失败,因此完整的模式 在在线测试工具 Regexr
上查看您的图案
测试字符串的长度为5个字符。用[a-zA-Z]
代替0。检查替换后的结果是否与完全匹配 ^'d{4}
。