正则表达式:仅匹配带数字的字母

时间:2012-12-19 11:46:41

标签: regex

如何创建仅与字母匹配数字的正则表达式?

我尝试了类似(?>[A-z]+)([a-z0-9]+)的内容。

正则表达式应该给出以下结果:

1234b --> true
1234 --> false
abcd --> false
abcd4 --> true

4 个答案:

答案 0 :(得分:9)

(?:\d+[a-z]|[a-z]+\d)[a-z\d]*

基本上,1和a是任何数字和任何字母,它匹配1a或a1,由任意数量的字母数字字符包围。

编辑:现在更短,可能更快

答案 1 :(得分:6)

其他答案不正确,并且允许任何仅包含字母,数字或两者的字符串。我的表达式将明确排除仅包含字母或仅包含数字的字符串。

[A-Za-z0-9]*([a-zA-Z]+[0-9]+|[0-9]+[a-zA-Z]+)

任意数量的字母和数字,后跟至少一个字母后跟一个数字或至少一个数字后跟一个字母。

然而,可能有一种更简单的方法。我看起来很啰嗦。也许不是。有人关心投球吗? :P

答案 2 :(得分:1)

^([a-Z]+[0-9]+|[0-9]+[a-Z]+)[a-Z0-9]*$

以及受TimPietzcker启发的简单版本:

^([a-Z]+[0-9]|[0-9]+[a-Z])[a-Z0-9]*$

答案 3 :(得分:0)

如果你不必要,不要让它成为一个正则表达式。使用两个必须匹配的正则表达式。在Perl中,它就像这样

if ( /[a-zA-Z]/ && /\d/ )