名称的正则表达式应以字母开头

时间:2013-07-17 05:06:42

标签: c# regex

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

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

但它接受像“1125151asdgvhavdg”这样的字符串。也就是说,它在开始时就是数字。

我的字符串应如下所示

  

ads564564545456 fdsf78

4 个答案:

答案 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)。