我需要正则表达式来匹配以下字符串:
12D09
1s909
A3434
a1
3F9
t
888
0
因此,字符串最多有5个字符。它们是数字,其中一个可能是字母,只有一个或零个字母{0,1}。
我试过
/[0-9a-z]{1,5}/i
但这也允许aaaa
答案 0 :(得分:2)
你的正则表达式是
\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个字母或数字。这部分也允许不止一个字母,但负面的前瞻会失败,所以完整的模式。
答案 1 :(得分:0)
测试你的字符串长度为5个字符。用[a-zA-Z]
代替什么。检查替换后的结果是否与完全匹配 ^\d{4}
。