JavaScriptの正規表現フラグについて

JavaScriptの正規表現フラグについて

このページでは、JavaScriptにおける正規表現のフラグについて、それぞれの機能と具体例を交えながら解説します。以下の見出しから、各フラグの詳細にジャンプできます。

1. flags プロパティ

regexp.flagsプロパティは、正規表現オブジェクトに設定されているすべてのフラグを文字列として返します。このプロパティは読み取り専用で、正規表現を理解する際に便利です。

const regex = /hello/gi;
console.log(regex.flags); // "gi"

この例では、正規表現にg(global)とi(ignoreCase)が設定されています。それを確認できます。

2. global フラグ (g)

gフラグを設定すると、正規表現のマッチが最初の1つだけでなく、対象文字列全体を検索します。

const regex = /hello/g;
const str = "hello world, hello universe";
console.log(str.match(regex)); // ["hello", "hello"]

フラグを指定しない場合、最初のマッチだけが返されます。

const regex = /hello/;
console.log(str.match(regex)); // ["hello"]

3. ignoreCase フラグ (i)

iフラグを設定すると、大文字と小文字を区別しなくなります。

const regex = /hello/i;
console.log(regex.test("Hello")); // true

この例では、Helloもマッチしています。

4. multiline フラグ (m)

mフラグを設定すると、^ と $ が行頭と行末を示すようになります。

const regex = /^hello/m;
const str = "world\nhello";
console.log(str.match(regex)); // ["hello"]

フラグがない場合、^ は文字列全体の先頭のみを意味します。

5. unicode フラグ (u)

uフラグは、Unicodeエスケープシーケンスやコードポイントに対応する正規表現を有効にします。

const regex = /\u{1F600}/u;
const str = "😀";
console.log(regex.test(str)); // true

この例では、絵文字にマッチします。

6. sticky フラグ (y)

yフラグを使用すると、検索は現在の位置からのみ行われます。

const regex = /hello/y;
regex.lastIndex = 6;
const str = "world hello";
console.log(regex.test(str)); // true

lastIndexプロパティを設定することで、特定の位置から検索できます。

7. dotAll フラグ (s)

sフラグを設定すると、.は改行文字にもマッチします。

const regex = /hello.world/s;
const str = "hello\nworld";
console.log(regex.test(str)); // true

フラグがない場合、.は改行にマッチしません。

8. hasIndices フラグ (d)

dフラグを使用すると、マッチしたインデックス情報を取得できます。このフラグは正規表現がより詳細な結果を返すために役立ちます。

const regex = /hello/d;
const str = "hello world";
const match = regex.exec(str);
console.log(match.indices); // [[0, 5]]

この例では、helloのインデックス範囲が配列として返されています。

以上がJavaScriptの正規表現フラグに関する詳細な解説です。正規表現を効果的に利用するために、各フラグを適切に活用してください。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です