名字的正则表达式

时间:2017-12-08 16:52:31

标签: regex

我已经获得了用户名和姓的RegEx模式。它们只能包含字母字符,空格(0 - 任意),连字符(0 - 任意),撇号' (0 - 任意)和符号数1 - 40.名字和姓氏不能以'开头或空白

这是我的模式代码。

^^[a-zA-Z]+[\-\'\s]?[a-zA-Z ]{1,40}$

但RegEx现在允许使用此样本Endevald O' McKnight

1 个答案:

答案 0 :(得分:2)

您可以使用

^(?=.{1,40}$)[a-zA-Z]+(?:[-'\s][a-zA-Z]+)*$

请参阅regex demo

<强>详情

  • ^ - 字符串的开头
  • (?=.{1,40}$) - 除了字符串中的换行符之外,必须有1到40个字符
  • [a-zA-Z]+ - 一个或多个ASCII字母
  • (?: - 非捕获组的starto重复0次或更多次匹配序列
    • [-'\s] - -'或空白
    • [a-zA-Z]+ - 1+ ASCII字母
  • )* - 分组结束
  • $ - 字符串结尾