正则表达式(字母数字)

时间:2009-10-26 05:46:14

标签: regex

我需要一个正则表达式,允许用户输入以字母(不是数字)开头的字母数字字符串。

3 个答案:

答案 0 :(得分:10)

这应该适用于正则表达式(RE)引擎的任何。 PCRE世界中有一个更好的语法,但我更喜欢能够在任何地方运行:

^[A-Za-z][A-Za-z0-9]*$

基本上,第一个字符必须是alpha,后跟零个或多个alpha-numerics。开始和结束标签用于确保整条线匹配。如果没有这些,您可以匹配AB12字符串的"@@@AB12!!!"

完整的解释:

^            start tag.
[A-Za-z]     any one of the upper/lower case letters.
[A-Za-z0-9]  any one of the upper/lower case letters or digits,
*            repeated zero or more times.
$            end tag

<强>更新

正如Richard Szalay正确指出的那样,这只是ASCII(或者更确切地说,是A-Z,a-z和0-9组连续的任何编码方案),仅适用于“英文”字母。

如果你想要真正的国际化RE(只有你知道这是否是一个要求),你需要使用一个更合适的RE引擎,例如上面提到的PCRE,并确保它是为Unicode模式编译的。然后,您可以分别使用\p{L}\p{N}等“字符”作为字母和数字。我认为在这种情况下RE将是:

^\p{L}[\pL\pN]*$

但我不确定。我从来没有将RE用于我们的国际化软件。请参阅here,了解有关PCRE的更多信息。

答案 1 :(得分:1)

我认为这应该做的工作:

^[A-Za-z][A-Za-z0-9]*$

答案 2 :(得分:0)

你正在寻找这样的模式:

^[a-zA-Z][a-zA-Z0-9]*$

之后需要一个字母和任意数量的字母/数字。您可能需要调整允许的长度。