名称的正则表达式 - 包含(但不是以特定特殊字符开头/结尾)

时间:2015-10-26 09:23:58

标签: regex

我需要验证'name'字段的用户输入。

名称应满足以下要求。

  • 应该只是字母(包括国际字符)
  • 应该接受 - 和'和空白(James Horner,James O'Connel,James-reed Horner)
  • 不应以上述特殊字符开头或结尾。
  • 不应连续包含上述两个或两个以上的特殊字符
  • 长度不应超过25(非强制性)

为此,我提出了以下正则表达式

(^([A-Za-z]+([-']?|\s+))+([a-zA-Z])+$){1,25}

使用上面的RE我可以验证字符串以字母开头,并且只包含上面提到的特殊字符。但由于我使用'+',无法验证其长度。此外,它不接受单个字母(例如:'a'在我的情况下也是有效的名称)。

如何验证上述所有情况?

1 个答案:

答案 0 :(得分:1)

可接受的解决方案是:

^(?!.*?([' -])\1)\b([a-z '-]{1,25})\b$

使用修饰符i忽略大写/小写字符。 regex101演示可以是seen here