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