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
答
根据您的描述,编辑和评论,你可以在Javascript中使用这个正则表达式:
/^(?=.{2})(?!.*([a-z])\1{3})[a-z]+(?:[' -][a-z]+)*$/gmi
有2个向前看符号:
-
(?=.{2})
- 积极向前看,以确保有输入 -
(?!.*([a-z])\1{3})
负前瞻至少2个字符,以确保我们不会允许4次重复字母的。
+1
编辑了一下,这个伎俩。谢谢 – Carpentweet
添加有效和无效样本 – anubhava
这对姓名验证这样: 阿什利 - 有效 詹姆斯 - 有效 乔·米歇尔 - 有效 Jeeeerry - 无效 奥布莱恩 - 有效 艾玛杰恩 - 有效 Jo-- Danielle - invalid – Carpentweet
阅读[Falsehoods程序员相信姓名](http://www.kalzumeus.com/2010/06/17/falsehoods-programmers-believe-about-names/)并重新考虑您是否确实需要此验证。 – str