求助满足特定姓名格式规范的RegEx正则表达式写法
英文姓名格式正则表达式
直接使用如下正则即可满足所有要求:^[A-Z](?:[a-zA-Z]|['. -](?![ '. -]))*[a-z]$
规则匹配说明
^[A-Z]:强制字符串首字符为大写英文字母,符合首字符大写要求- 中间匹配逻辑:
- 仅允许出现英文字母、撇号、句号、连字符、空格五类合法字符
- 负向预查
(?![ '. -])限制所有标点、空格的后一位不能是同类符号,完全避免连续标点、连续空格、标点串联(如.-/'等非法格式)
[a-z]$:强制字符串末尾字符为小写英文字母,符合末尾小写要求
验证示例
合法输入(可正常匹配)
- John
- Jean-Pierre
- Smith.Rowe
- Harry Smith
- O'Conner
非法输入(会被拦截)
- john(首字母小写)
- Jean--Pierre(连续连字符)
- Smith.-Rowe(句号后直接跟连字符,属于连续标点)
- Harry Smith(姓名中间存在两个连续空格)
- Smith.(末尾是标点,非小写字母)
内容的提问来源于stack exchange,提问作者MisterIbbs
相关产品推荐
相关产品推荐

