正则表达式以验证全名

时间:2020-08-07 17:55:57

标签: regex

全名可以是1到3个单词,每个单词之间用空格隔开,由以下内容组成:

  • 名字(允许字母和连字符-
  • MiddleName(仅允许字母)和
  • 姓氏(允许字母和连字符-

注意:全名不得超过50个字符。

有效输入:
Abc
Abc-abc abc
Abc-abc abc abc-abc
abc abc abc

无效输入:
abc abc-abc abc
abc qwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjkllz(超过50个字符)

我最初的正则表达式如下:
^([a-zA-Z\-]{1,50}|[a-zA-Z\-]+\s{1}[a-zA-Z\-]+|[a-zA-Z\-]+\s{1}[a-zA-Z]+\s{1}[a-zA-Z\-]+)$

我无法添加2个和3个单词的长度检查。

1 个答案:

答案 0 :(得分:0)

如果受支持,则可以使用正向查找来检查字符串是否不包含51个字符。

在可选组中使用一个可选组来匹配第二个名字和姓氏,以防止第二个名字包含-

您不必在字符类末尾转义连字符。

^(?!.{51})[a-zA-Z-]+(?: [a-zA-Z]+(?: [a-zA-Z-]+)?)?$

Regex demo