2011-12-20 63 views
-2

我需要的正则表达式匹配以下字符串:用数字简单的正则表达式和一个字母

12D09 
1s909 
A3434 
a1 
3F9 
t 
888 
0 

所以,字符串具有最大的5个字符。它们是数字,其中一个可能是字母,只有一个或零个字母{0,1}。

我试图

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

,但是这也让aaaa

+0

哪种语言? – fge 2011-12-20 16:35:48

+0

需要更多信息。 – CSharpened 2011-12-20 16:36:24

+0

@Ondrej Tucny我知道正则表达式不好。在这个任务中,我无法想象如何做到这一点。/[0-9a-z] {1,5}/i - 不好,因为它匹配'aaaa',我只需要一个字母即可.. – 2011-12-20 16:40:00

回答

0

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

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

相关问题