2017-06-16 8 views
2

を使用する'aabcc'.match(/(\w)\1+/g)繰り返しのペアを見つけることができます。しかし、正規表現を更新して、それらが隣接していないことを確認するにはどうすればよいですか? 'aabcc':たとえば :手紙の二つの非隣接対があるので少なくとも2つの隣接しない文字のペアを見つける方法

  • これは私にとって良いの文字列です。
  • この1つは'aacc'ではありません。
+0

文字列の文字に隙間があるかどうかを判断する解決策を求めることを意味しますか?この文脈では、「重なり合う」という単語は意味をなさない。 – mhodges

+0

彼の例は、「重なり合う」のではなく「隣接する」という意味で、私はその問題を編集した。 @ rel1x: 'aabbcc'のaa/ccペアは、bbがそれらを分けるので一致と見なされますか? – the8472

+0

これは任意の長さで、パターンは常に22122ですか?それは221221だろうか? – vaso123

答えて

4

あなただけの同一の連続した文字から成る文字列と一致して、その後、偽を返す:

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があるためです。 –

関連する問題