2017-06-22 61 views
1

任何人都可以告訴我什麼我可以添加到我現有的正則表達式,以便連續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

回答

1

根據您的描述,編輯和評論,你可以在Javascript中使用這個正則表達式:

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

RegEx Demo

有2個向前看符號:

  • (?=.{2}) - 積極向前看,以確保有輸入
  • (?!.*([a-z])\1{3})負前瞻至少2個字符,以確保我們不會允許4次重複字母的。
+1

編輯了一下,這個伎倆。謝謝 – Carpentweet

相關問題