简单的正则表达式与数字和一个字母

时间:2011-12-20 16:32:25

标签: php regex

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

12D09
1s909
A3434
a1
3F9
t
888
0

因此,字符串最多有5个字符。它们是数字,其中一个可能是字母,只有一个或零个字母{0,1}。

我试过

 /[0-9a-z]{1,5}/i

但这也允许aaaa

2 个答案:

答案 0 :(得分:2)

你的正则表达式是

\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. 在线测试工具上
  5. See your pattern Regexr

答案 1 :(得分:0)

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