我正在尝试为一个以字母开头的名字写一个正则表达式,并且字符串中也可以包含空格和数字。
目前我正在使用^(?=.*[a-zA-Z].*)([a-zA-Z0-9' ]{1,50})$
。
但它接受像“1125151asdgvhavdg”这样的字符串。也就是说,它在开始时就是数字。
我的字符串应如下所示
ads564564545456 fdsf78
答案 0 :(得分:5)
简单如下:
^([a-zA-Z][a-zA-Z0-9' ]{0,49})$
这里你不需要任何断言
答案 1 :(得分:0)
您可以使用以下代码:
^([a-zA-Z\s][a-zA-Z0-9]{1,50})$
这个正则表达式以字符开头,允许空格和数字。
答案 2 :(得分:0)
你可以简洁地表达出来:
^(?i)[a-z][a-z\d ]{0,49})$
答案 3 :(得分:0)
如果您不是100%确定永远只会匹配Ascii字母,那么您应该查看Unicode properties,例如致\p{L}
。
\p{L}
来自任何语言的任何信件。
或Unicode scripts,收集某些语言所需的字母。
所以你的正则表达式看起来像这样:
^\p{L}[\p{L}\p{Nd}' ]{0,49}$
我还将0-9
替换为属性\p{Nd}
(除了表意文字脚本之外的任何脚本中的数字0到9)。