由数字和一个字母组成的简单正则表达式


Simple regex with numbers and one letter

我需要正则表达式来匹配以下字符串:

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
  1. 'b是一个词边界,这些对于避免长字符串的部分匹配很重要,如果您想在更长的字符串中匹配此模式,这是正确的选择。如果这些模式是完整的字符串,还可以使用

    ^(?!.*[a-z].*[a-z])[a-z0-9]{1,5}$
    

    ^为串的起点锚点,$为串的终点锚点。

  2. 向前看 (?!.*[a-z].*[a-z])不匹配任何东西,它是一个零宽度断言。它确保字符串中不存在两个字母。

  3. 真正的模式 [a-z0-9]{1,5}匹配1到5个字母或数字。这部分也允许多个字母,但如果是负数,则会失败,因此完整的模式

  4. 在线测试工具 Regexr 上查看您的图案

测试字符串的长度为5个字符。用[a-zA-Z]代替0。检查替换后的结果是否与完全匹配 ^'d{4}