レトロコード:
私は「caaab」内のすべての「AA」のサブ文字列を検索するつもりです。だから、私は次の正規表現を使用しました。
/aa/g
引用された表現を使用して、私はそれはJavaScriptの期待マッチメソッドが返す2つの特派パターン。あなたが見ることができるように、共有の真ん中には、「」2「AA」のパターンが発生します!それにもかかわらず、それは単に最初のものを返します。どのような正規表現に問題があり、そしてどのように私はそれを修正することができますか?
let foundArray=d.match(/aa/g);
AD7six:
先読みを使用してください
正規表現が動作するように設計されている方法ですコメントで述べたように:
それがはずだとして、それは正確に働いています。それは文字を消費したら、それはそれを通り過ぎます
マッチが重なり合い、これは単純だJSの制限ではありませんしていない表現がどのように機能するかを定期的に。
使用することを回避する方法は長さゼロの試合を、すなわち、先読みまたはルックの背後にあります
ティムの既存の答えは、すでにこれを行いますが、以下のように簡略化することができます。
match = "caaab".match(/a(?=a)/g);
console.log(match);
これは、発見されたa
別の続くa
(一致の一部として返されていません)。だから、技術的にそれが見つけています:
caaab
^ first match, single character
^ second match, single character