首页 > 解决方案 > 正则表达式验证全名

问题描述

全名可以是 1 到 3 个单词,用空格隔开,包括以下内容:

注意:全名不应超过 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 个单词添加长度检查。

标签: regex

解决方案


如果支持,您可以使用肯定的前瞻来检查字符串是否不包含 51 个字符。

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

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

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

正则表达式演示


推荐阅读