2017-06-16 80 views
2

使用'aabcc'.match(/(\w)\1+/g)我可以找到重複的字母對。但是,如何更新我的正則表達式來檢查它們是否相鄰? 例如:如何查找至少兩個不相鄰的字母對

  • 這是我一個很好的字符串,因爲有兩個不相鄰的字母:'aabcc'
  • 這一個'aacc'不是一個好字符串。
+0

您的意思是要求解決方案來確定字符串中的字母是否有空白? 「重疊」一詞在這方面沒有意義 – mhodges

+0

他的例子表明他的意思是「相鄰」而不是「重疊」,我編輯了這個問題。 @ rel1x:由於bb將它們分開,「aabbcc」中的aa/cc對會被視爲匹配嗎? – the8472

+0

它可以是任何長度,模式總是22122?它可能是221221? – vaso123

回答

4

您可以匹配的字符串,僅由相同的連續的字母,並返回false,那麼:

function isValid(s) { 
 
    return !/^(?:(\w)\1+)+$/.test(s); 
 
} 
 
console.log(isValid('aabcc')); 
 
console.log(isValid('aacc'));

^(?:(\w)\1+)+$比賽:

  • ^ - 啓動字符串
  • (?:(\w)\1+)+ - 1個或多個的:
    • (\w) - 一個字炭捕獲到組1
    • \1+ - 1次或多次出現值存儲在第1組
  • $ - 串的端。
+0

@Tushar是的,因爲有'e'不是「連續重複」。 –

相關問題