すでに投稿された回答を詳しく説明するには、次のようにグローバル マッチが必要です。
var matches = string.match(/(abc|def)\d{8,11}/g);
これは、次の文字列のすべてのサブセットに一致します。
- 「abc」または「def」で始めます。これが「(abc|def)」の部分です
- その後、8 ~ 11 桁が続きます。これは「\d{8,11}」の部分です。\d は数字に一致します。
"g" フラグ (グローバル) は、最初の一致だけでなく、すべての一致のリストを取得します。
あなたの質問では、数字ではなく8 ~ 11文字を要求しました。数字でも他の文字でもかまわない場合は、"." を使用できます。「\d」の代わりに。
また、一致例のそれぞれに、「abc」または「def」の後に 11 文字を超える文字があることにも気付きました。任意の桁数でよい場合は、次の正規表現の方が適している可能性があります。
- 任意の桁数 -
var matches = string.match(/(abc|def)\d*/g);
- 少なくとも 1 桁 -
var matches = string.match(/(abc|def)\d+/g);
- 8桁以上 -
var matches = string.match(/(abc|def)\d{8,}/g);