概要: このチュートリアルでは、量指定子を使用して、文字列内の文字、グループ、または文字クラスの複数のインスタンスにマッチさせる方法を学びます。
量指定子は、マッチが見つかるために、入力文字列に文字、グループ、または文字クラスがいくつ出現する必要があるかを指定します。
量
正確な数 {n}
中括弧{n}
内の数字は最も単純な量指定子です。文字または文字クラスに追加すると、マッチさせたい文字または文字クラスの数を指定します。
たとえば、正規表現/\d{4}/
は4桁の数字にマッチします。これは/\d\d\d\d/
と同じです。
let str = 'ECMAScript 2020';
let re = /\d{4}/;
let result = str.match(re);
console.log(result);
Code language: JavaScript (javascript)
出力
['2020', index: 11, input: 'ECMAScript 2020', groups: undefined]
Code language: JavaScript (javascript)
範囲 {n,m}
範囲は、文字または文字クラスがn
回からm
回マッチすることを指定します。
たとえば、2桁、3桁、または4桁の数字を見つけるには、正規表現/\d{2,4}/g
を使用します。
let str = 'The official name of ES11 is ES2020';
let re = /\d{2,4}/g;
let result = str.match(re);
console.log(result);
Code language: JavaScript (javascript)
出力
["11", "2020"]
Code language: JavaScript (javascript)
上限はオプションであるため、{n,}
はn
回以上のシーケンスを検索します。たとえば、正規表現/\d{2,}/
は2桁以上の任意の数字にマッチします。
let str = 'The official name of ES6 is ES2015';
let re = /\d{2,}/g;
let result = str.match(re);
console.log(result);
Code language: JavaScript (javascript)
出力
["2015"]
Code language: JavaScript (javascript)
次の例では、正規表現/\d{1,}/g
を使用して、電話番号内の1桁以上の任意の数字にマッチさせます。
let numbers = '+1-(408)-555-0105'.match(/\d{1,}/g);
console.log(numbers);
Code language: JavaScript (javascript)
出力
["1", "408", "555", "0105"]
Code language: JavaScript (javascript)
省略形
+
量指定子{1,}
は1回以上を意味し、+
という省略形があります。たとえば、\d+
は数字を検索します。
let phone = "+1-(408)-555-0105";
let result = phone.match(/\d+/g);
console.log(result);
Code language: JavaScript (javascript)
出力
["1", "408", "555", "0105"]
Code language: JavaScript (javascript)
?
量指定子?
は0回または1回を意味します。これは{0,1}
と同じです。たとえば、/colou?r/
はcolor
とcolour
の両方にマッチします。
let str = 'Is this color or colour?';
let result = str.match(/colou?r/g);
console.log(result);
Code language: JavaScript (javascript)
出力
["color", "colour"]
Code language: JavaScript (javascript)
*
量指定子*
は0回以上を意味します。これは{0,}
と同じです。次の例は、量指定子*
を使用して、文字列Java
に続けて任意の単語文字にマッチさせる方法を示しています。
let str = 'JavaScript is not Java';
let re = /Java\w*/g
let results = str.match(re);
console.log(results);
Code language: JavaScript (javascript)
出力
["JavaScript", "Java"]
Code language: JavaScript (javascript)
複雑な正規表現を形成するために、量指定子をよく使用します。以下に、量指定子を含む正規表現の例をいくつか示します。
- 整数:
/^\d+$/
- 小数:
/^\d*\.\d+$/
- 整数と小数:
/^\d*(\.\d+)?$/
- 負、正の整数と小数:
/^-?\d*(\.\d+)?$/
まとめ
次の表に量指定子をリストします。
量指定子 | 説明 |
---|---|
* | 0回以上マッチします。 |
+ | 1回以上マッチします。 |
? | 0回または1回マッチします。 |
{ n} | 正確にn回マッチします。 |
{ n,} | 少なくともn回マッチします。 |
{ n, m} | n回からm回までマッチします。 |