JavaScript 正規表現グループ
正規表現は、特定の文字列の文字または単語の組み合わせに一致するパターンです。 正規表現も JavaScript のオブジェクトです。
これらのパターンは、RegExp の test()
および exec()
と、メソッド matchAll()
、 match()
、replaceAll()
、replace()
、search()
と split()
の文字列。
今日の投稿では、JavaScript の正規表現グループについて学びます。
JavaScript の正規表現グループ
パターンの一部は、括弧 (...)
で囲むことができます。 これは、キャプチャ グループ
と呼ばれます。
これには 2つの効果があります。
- 一致の一部を結果配列の個別の要素として保持できます。
- 括弧の後に数量詞を置くと、括弧全体に適用されます。
構文:
const re = /ab+c/;
const re = new RegExp('ab+c');
上記の構文は、通常の正規表現パターンを示しています。 先読みアサーションには、positive
と negative
の 2つの方法があります。
肯定先読みの構文は (?=...
) です。 否定先読みの構文は (?!...)
です。 前方否定は、パターンが特定のパターンに従わないことを表明します。
ES2018 は、先読みアサーションを JavaScript に統合することにより、先読みアサーションを補完します。 (?<=...)
でマークされたバックスペース アサーションを使用すると、別のパターンが前にある場合にのみパターンに一致させることができます。
グループと範囲の詳細については、グループと範囲
のドキュメントを参照してください。
名前取得グループ
文字を括弧で囲むことにより、正規表現の一部をグループ化できます。 これにより、交替をパターンの一部に制限したり、グループ全体にクオンタイザーを適用したりできます。
また、括弧内の一致する値を抽出して、さらに処理することもできます。
次のコードは、文字列内の年、月、日を検索する方法の例を示しています。
const regEx = /(\d{4})-(\d{2})-(\d{2})/;
const matchedPattern = regEx.exec('2022-04-22');
console.log(matchedPattern[0]);
console.log(matchedPattern[1]);
console.log(matchedPattern[2]);
console.log(matchedPattern[3]);
上記の例では、年、月、日の正規表現を定義しました。 最後に、指定された文字列に対して正規表現を実行すると、パターンがキャプチャされ、一致するグループでグループ化されます。
パターンは年、月、日であることを覚えておく必要があります。 正規表現全体が実行されると、次のような結果が出力されます。
出力:
"2022-04-22"
"2022"
"04"
"22"
上記の問題の解決策は、グループをキャプチャすることです。 最も高度なバージョンは、(?<name>...)
の形式でより表現力豊かな構文を使用してグループをキャプチャしています。
const regEx = /(?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})/;
const matchedPattern = regEx.exec('2022-03-22');
console.log(matchedPattern.groups);
console.log(matchedPattern.groups.year);
console.log(matchedPattern.groups.month);
console.log(matchedPattern.groups.day);
上記の例では、年の正規表現を定義し、その年に名前を付けました。 同様に、月と日の正規表現を定義しました。
最後に、指定された文字列に対して正規表現を実行すると、パターンがキャプチャされ、一致するグループでグループ化されます。 正規表現全体が実行されると、次のような結果が出力されます。
出力:
{
day: "22",
month: "03",
year: "2022"
}
"2022"
"03"
"22"
こちら から完全なコードにアクセスすることもできます。
Shraddha is a JavaScript nerd that utilises it for everything from experimenting to assisting individuals and businesses with day-to-day operations and business growth. She is a writer, chef, and computer programmer. As a senior MEAN/MERN stack developer and project manager with more than 4 years of experience in this sector, she now handles multiple projects. She has been producing technical writing for at least a year and a half. She enjoys coming up with fresh, innovative ideas.
LinkedIn