如何找到至少两个不相邻的字母对

时间:2017-06-16 15:26:52

标签: javascript regex

使用'aabcc'.match(/(\w)\1+/g)我可以找到重复的字母对。但是,如何更新我的正则表达式以检查它们是否相邻? 例如:

  • 这对我来说是一个很好的字符串,因为有两对不相邻的字母:'aabcc'
  • 这个'aacc'不是一个好的字符串。

1 个答案:

答案 0 :(得分: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组
    • 中的值的一次或多次出现
  • $ - 字符串结束。