JavaScript 正規表現 出現回数の記述
{n} 連続n回の出現
{n} で「連続n回の出現」を意味します。
例えば、「0から9までの数字が連続して3回出現」という意味のパターンは \d{3} と書けます。
const r = /\d{3}/
console.log(r.test('123')) // true
console.log(r.test('55')) // false
console.log(r.test('98765')) // true
注意する点としては、上記の三番目の例です。 '98765' という「数字5個」に \d{3} がマッチしています。 文字列全体では数字5個ですが、 '987' の部分など「数字3個」の部分があるのでマッチします。
文字列全体で「数字3個」にマッチするためには、パターンを ^\d{3}$ とします。
const r = /^\d{3}$/
console.log(r.test('123')) // true
console.log(r.test('98765')) // false
詳しくは「JavaScript 正規表現 マッチ場所の指定」をご覧ください。
{n,m} n回からm回までの出現
{n,m} で「n回からm回までの出現」を意味します。
const r = /Go{2,5}gle/
console.log(r.test('Gogle')) // false
console.log(r.test('Google')) // true
console.log(r.test('Gooooogle')) // true
console.log(r.test('Goooooogle')) // false
{n,} n回以上の出現
{n,} で「n回以上の出現」を意味します。
const r = /Go{2,}gle/
console.log(r.test('Gogle')) // false
console.log(r.test('Google')) // true
console.log(r.test('Gooooogle')) // true
console.log(r.test('Goooooogle')) // true
? 0回か1回の出現
? で「0回か1回の出現」を意味します。言い換えると「?の箇所はあってもなくても良い」と言えます。
const r = /(https:\/\/)?www\.apple\.com/
console.log(r.test('https://www.apple.com')) // true
console.log(r.test('www.apple.com')) // true
パターン中の / 文字はバックスラッシュ \ でエスケープする必要があります。 また、パターン中のドット . は任意の文字を表すので、リテラルの . をパターンに含めるには、エスケープして \. とするか [.]とします。
* 0回以上の出現
* は「0回以上の出現」を意味します。
const r = /go*gle/
console.log(r.test('ggle')) // true
console.log(r.test('goooooogle')) // true
+ 1回以上の出現
* は「1回以上の出現」を意味します。
const r = /go+gle/
console.log(r.test('ggle')) // false
console.log(r.test('goooooogle')) // true