Get to know MDN better
このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docs コミュニティーについてもっと知り、仲間になるにはこちらから。
This feature is well established and works across many devices and browser versions. It’s been available across browsers since 2015年7月.
数量詞は、アトムを指定した回数繰り返します。数量詞は適用するアトムの後に配置します。
単一のアトムです。
count非負の整数です。アトムが繰り返される回数です。
min非負の整数です。アトムが繰り返すことができる最小回数です。
max 省略可非負の整数です。アトムが繰り返すことができる最大回数です。省略した場合、アトムは必要なだけ繰り返されます。
数量詞はアトムの後に置かれ、そのアトムを一定回数繰り返します。単独で現れることはありません。それぞれの数量詞は、パターンが繰り返されなければならない最小数と最大数を指定することができます。
| ? | 0 | 1 |
| * | 0 | 無限大 |
| + | 1 | 無限大 |
| {count} | count | count |
| {min,} | min | 無限大 |
| {min,max} | min | max |
{count}、{min,}、{min,max} の構文では、数値の周りに空白を入れることはできません。そうしないとリテラルのパターンになります。
この動作は Unicode 対応モードで修正され、中括弧をエスケープなしでリテラルに入れることができなくなりました。{ と } がエスケープなしでリテラルとして使用できるというのはウェブの互換性のための非推奨構文としてのみ認められており、頼ってはいけません。
最小値が最大値より大きいと構文エラーになります。
数量詞によって、キャプチャグループを複数回照合させることができます。この場合の動作については、キャプチャグループのページを参照してください。
一致するごとに文字列が同じである必要はありません。
数量詞は既定では貪欲です。つまり、最大値に達するまで、あるいはそれ以上一致させることができなくなるまで、可能な限り何度でも照合しようとします。数量詞の後に ? を付けることで、貪欲でない数量詞にすることができます。この場合、数量詞はできる限り一致回数を少なくさせようとし、残りのパターンをこの回数で一致させることができなくなった場合のみ、それ以上の回数を照合しようとします。
ただし、あるインデックスで正規表現が文字列と一致すると、それ以降のインデックスを試さなくなります。
貪欲な数量詞は、それ以外のパターンに一致することが不可能な場合、反復回数を少なくしようとするかもしれません。
この例では、最初の [ab]+ は貪欲に "abb" に一致しますが、[abc]c は残りのパターン ("c") に一致することができないので、数量詞は "ab" だけに一致するように縮小されます。
貪欲な数量詞は、無限個の空文字列と一致することを避けます。 照合する文字数が最小値に達し、その位置のアトムで消費される文字がなくなると、 数量詞は照合を停止します。 これが /(a*)*/.exec("b") が無限ループにならない理由です。
貪欲な数量詞は可能な限り多くの回数の照合をしようとします。例えば、/(aa|aabaac|ba)*/.exec("aabaac") は "aabaac" の代わりに "aa" と :ba" に一致します。
数量詞は単一のアトムに適用されます。長いパターンや論理和を量化したい場合は、グループ化する必要があります。 数量詞はアサーションには適用できません。
Unicode 対応モードでは、先読みアサーションは量化できます。これはウェブの互換性のための非推奨構文であり、頼ってはいけません。
次の例は、山括弧で囲まれた HTML タグを除去します。消費する文字が多くなりすぎないように ? を使用していることに注意してください。
貪欲な照合でも同じ効果が得られますが、繰り返されるパターンが > に一致しません。
警告: これはデモのためのもので、属性値の中に > がある場合は正しく扱えません。代わりに適切な HTML サニタイザー、たとえば HTML サニタイザー API などを使用してください。
Markdown では、段落は 1 つ以上の空白行で区切られます。次の例では、2 つ以上の改行と照合することで、文字列内のすべての段落を数えます。
警告: これはデモのためのもので、コードブロック内の改行や、見出しのような他の Markdown ブロック要素を処理しません。代わりに適切な Markdown パーサーを使用してください。
| ECMAScript® 2027 Language Specification # prod-Quantifier |
Enable JavaScript to view this browser compatibility table.
This page was last modified on 2024年7月28日 by MDN contributors.
Your blueprint for a better internet.
Visit Mozilla Corporation’s not-for-profit parent, the Mozilla Foundation.
Portions of this content are ©1998–2026 by individual mozilla.org contributors. Content available under a Creative Commons license.