1

我正在尝试为名称编写一个以字母开头的正则表达式,并且字符串中也可以包含空格、数字。

目前我正在使用^(?=.*[a-zA-Z].*)([a-zA-Z0-9' ]{1,50})$.

但它接受像“1125151asdgvhavdg”这样的字符串。即,它在开始时采用数字。

我的字符串应该是这样的

广告564564545456 fdsf78

4

4 回答 4

5

很简单:

^([a-zA-Z][a-zA-Z0-9' ]{0,49})$

您在这里不需要任何断言

于 2013-07-17T05:08:38.257 回答
0

如果您不能 100% 确定永远只有 Ascii 字母要匹配,那么您应该查看Unicode 属性,例如 letter \p{L}

\p{L}任何语言的任何类型的信件。

Unicode 脚本,用于收集某些语言所需的字母。

所以你的正则表达式看起来像这样:

^\p{L}[\p{L}\p{Nd}' ]{0,49}$

我也替换0-9为属性\p{Nd}(除表意文字之外的任何文字中的数字 0 到 9。)

于 2013-07-17T06:01:31.740 回答
0

您可以使用以下代码:

^([a-zA-Z\s][a-zA-Z0-9]{1,50})$

此正则表达式以字符开头并允许空格和数字。

于 2013-07-17T05:19:10.660 回答
0

你可以这样简洁地表达它:

 ^(?i)[a-z][a-z\d ]{0,49})$
于 2013-07-17T05:23:14.403 回答