正则表达式(字母数字)

Sur*_*har 0 regex

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

pax*_*blo 10

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

^[A-Za-z][A-Za-z0-9]*$
Run Code Online (Sandbox Code Playgroud)

基本上,第一个字符必须是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
Run Code Online (Sandbox Code Playgroud)

更新:

正如Richard Szalay正确指出的那样,这只是ASCII(或者更准确地说,是AZ,az和0-9组连续的任何编码方案),仅适用于"英文"字母.

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

^\p{L}[\pL\pN]*$
Run Code Online (Sandbox Code Playgroud)

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