我需要一个正则表达式,允许用户输入以字母(不是数字)开头的字母数字字符串。
答案 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]*$
之后需要一个字母和任意数量的字母/数字。您可能需要调整允许的长度。