概要: このチュートリアルでは、正規表現におけるセットとレンジについて学習します。
セット
角括弧はセット内の任意の文字を検索します。たとえば、[aeiou]は5つの文字('a'、'e'、'i'、'o'、'u')のいずれかに一致します。[...]はセットと呼ばれます。
たとえば、正規表現/[cbr]ats/gはcats、bats、ratsに一致します
let str = 'How cats, rats, and bats became Halloween animals';
let re = /[cbr]ats/g;
let results = str.match(re);
console.log(results);Code language: JavaScript (javascript)出力
["cats", "rats", "bats"]Code language: JavaScript (javascript)レンジ
角括弧には文字の範囲を含めることができます。たとえば、[a-z]はaからzまでの文字範囲です。そして[0-9]は0から9までの数字です。
[a-zA-Z0-9_] は \wと同じです。[0-9] は \dと同じです。
範囲を除外する
範囲を除外するには、[^...]のような除外範囲を使用します。
たとえば、[^0-9]は数字以外の任意の文字に一致します。これは\Dと同じです。
または、[^aeiou]は「a」、「e」、「i」、「o」、「u」以外の任意の文字に一致します。
特殊文字のエスケープ
通常、特殊文字をエスケープするにはバックスラッシュを使用します(例: \.)。ただし、角括弧内では、角括弧に意味がある場合を除き、ほとんどの特殊文字をエスケープする必要はありません。
たとえば、キャレット(^)が文字列の先頭にある場合は、エスケープする必要があります
[\^#$]Code language: JavaScript (javascript)キャレットが文字列の先頭ではない場合(^)、エスケープする必要はありません
[#^$]Code language: JavaScript (javascript)フラグu
セットにサロゲートペアがある場合は、正規表現にフラグuを追加して正しく動作させる必要があります
let result = 'It is 🍎'.match(/[🍎🍅🍓]/);
console.log(result);Code language: JavaScript (javascript)出力
["�"]Code language: JavaScript (javascript)この例では、[🍎🍅🍓]には3つではなく6つの文字があります
let str = '🍎🍅🍓';
for(let i=0; i<str.length; i++) {
console.log(str.charCodeAt(i));
}Code language: JavaScript (javascript)出力
55356
57166
55356
57157
55356
57171Code language: JavaScript (javascript)フラグuを追加すると、動作が正しくなります
let result = 'It is 🍎'.match(/[🍎🍅🍓]/u);
console.log(result);Code language: JavaScript (javascript)出力
["🍎"]Code language: JavaScript (javascript)要約
[...]を使用してセットを構成し、その中の任意の文字に一致します。- セット内で
-を使用して範囲を構成し、範囲内の任意の文字に一致します。 - 範囲を否定するには
^を使用します。
このチュートリアルは役立ちましたか?