2017-06-16 41 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'不是“连续重复”。 –

相关问题