我需要的正则表达式匹配以下字符串:用数字简单的正则表达式和一个字母
12D09
1s909
A3434
a1
3F9
t
888
0
所以,字符串具有最大的5个字符。它们是数字,其中一个可能是字母,只有一个或零个字母{0,1}。
我试图
/[0-9a-z]{1,5}/i
,但是这也让aaaa
我需要的正则表达式匹配以下字符串:用数字简单的正则表达式和一个字母
12D09
1s909
A3434
a1
3F9
t
888
0
所以,字符串具有最大的5个字符。它们是数字,其中一个可能是字母,只有一个或零个字母{0,1}。
我试图
/[0-9a-z]{1,5}/i
,但是这也让aaaa
测试你的字符串的长度为5个字符。用[a-zA-Z]
代替。检查替换后的结果是否与完全匹配^\d{4}
。
你的正则表达式将是
\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之间字母或数字匹配。这部分将允许也不止一个字母,但比负面的前瞻将失败,所以完整的模式。
See your pattern在在线测试工具 Regexr
哪种语言? – fge 2011-12-20 16:35:48
需要更多信息。 – CSharpened 2011-12-20 16:36:24
@Ondrej Tucny我知道正则表达式不好。在这个任务中,我无法想象如何做到这一点。/[0-9a-z] {1,5}/i - 不好,因为它匹配'aaaa',我只需要一个字母即可.. – 2011-12-20 16:40:00