4个或更多相同的连续字母

问题描述:

任何人都可以告诉我什么我可以添加到我现有的正则表达式,以便连续4个或更多相同的字母无效?这是我到目前为止有:4个或更多相同的连续字母

(^[A-Za-z]{1})([A-Za-z\-\'\s]{0,})([A-Za-z]{1}$) 

它符合所有,但我要求1迄今为止它们是:

  • 任何字母字符
  • 单个空格但不能作为第一个或最后一个字符
  • 连字符但不是第一个或最后一个字符
  • 单引号但不是第一个或最后一个字符
  • 连续不超过3个字符相同,不论案件的长
  • 至少2个字符,如果存在

一些例子:

James  - valid 
Sarah Jayne - valid 
Michellle - valid 
O'Brian  - valid 
Holly-Rose - valid 
Eeeeric  - invalid 
Jo--anne  - invalid 
+0

添加有效和无效样本 – anubhava

+0

这对姓名验证这样: 阿什利 - 有效 詹姆斯 - 有效 乔·米歇尔 - 有效 Jeeeerry - 无效 奥布莱恩 - 有效 艾玛杰恩 - 有效 Jo-- Danielle - invalid – Carpentweet

+1

阅读[Falsehoods程序员相信姓名](http://www.kalzumeus.com/2010/06/17/falsehoods-programmers-believe-about-names/)并重新考虑您是否确实需要此验证。 – str

根据您的描述,编辑和评论,你可以在Javascript中使用这个正则表达式:

/^(?=.{2})(?!.*([a-z])\1{3})[a-z]+(?:[' -][a-z]+)*$/gmi 

RegEx Demo

有2个向前看符号:

  • (?=.{2}) - 积极向前看,以确保有输入
  • (?!.*([a-z])\1{3})负前瞻至少2个字符,以确保我们不会允许4次重复字母的。
+1

编辑了一下,这个伎俩。谢谢 – Carpentweet