如何创建一个只匹配带数字的字母的正则表达式?
我试过类似的东西(?>[A-z]+)([a-z0-9]+)
。
正则表达式应给出以下结果:
1234b --> true
1234 --> false
abcd --> false
abcd4 --> true
如何创建一个只匹配带数字的字母的正则表达式?
我试过类似的东西(?>[A-z]+)([a-z0-9]+)
。
正则表达式应给出以下结果:
1234b --> true
1234 --> false
abcd --> false
abcd4 --> true
(?:\d+[a-z]|[a-z]+\d)[a-z\d]*
基本上,其中 1 和 a 是任意数字和任意字母,它匹配 1a 或 a1,由任意数量的字母数字字符包围。
编辑:现在更短,可能更快
其他答案不正确,将允许任何仅包含字母、数字或两者的字符串。我的表达式将明确排除仅由字母或数字组成的字符串。
[A-Za-z0-9]*([a-zA-Z]+[0-9]+|[0-9]+[a-zA-Z]+)
任意数量的字母和数字,后跟至少一个字母后跟一个数字或至少一个数字后跟一个字母。
但是,可能有一种更简单的方法可以做到这一点。我的似乎很啰嗦。也许不是。有人愿意投吗?:P
^([a-Z]+[0-9]+|[0-9]+[a-Z]+)[a-Z0-9]*$
和一个受 TimPietzcker 启发的更简单的版本:
^([a-Z]+[0-9]|[0-9]+[a-Z])[a-Z0-9]*$
如果你不需要,不要让它成为一个正则表达式。使用两个必须匹配的正则表达式。在 Perl 中,它会是这样的
if ( /[a-zA-Z]/ && /\d/ )