JavaScript の正規表現に関する完全なガイドへようこそ!この記事では、正規表現とは何か、JavaScript でどのように使用されるか、そして正規表現がコードの簡素化と最適化にどのように役立つかを詳しく説明します。基礎から実用的な例まで、JavaScript プロジェクトで正規表現を最大限に活用するために必要なすべてのことを説明します。それでは始めましょう!
正規表現の紹介
正規表現は、文字列内のテキストを検索および操作するために使用される検索パターンです。これらはリテラル文字とメタ文字の組み合わせで構成され、テキスト内の一致を検索するための特定のルールを定義します。これらのルールには、特定の文字、文字範囲、繰り返し、代替などの検索が含まれます。
JavaScriptでは、正規表現はクラスを使用して作成されます。 RegExp または文字通り /patrón/。パターンはスラッシュで囲まれた正規表現そのものです。簡単な例を見てみましょう。
const regex = /hola/;
この例では、テキスト内で文字列「hello」を検索する正規表現を作成しました。正規表現の基本を理解したところで、JavaScript で正規表現を操作するための重要な概念と高度なテクニックをいくつか見ていきましょう。
正規表現の基本構文
JavaScript の正規表現は、より複雑な検索パターンを定義できるいくつかの重要な要素で構成されています。これらの要素には、リテラル文字、メタ文字、文字クラス、量指定子、アンカーなどが含まれます。これらの要素のいくつかの例を見てみましょう。
リテラル文字
リテラル文字は、テキスト内に表示されるとおりに検索される文字です。例えば、正規表現 /hola/ テキスト文字列内で「hello」という文字シーケンスを検索します。正規表現では大文字と小文字が区別されるので、 /hola/ 「Hello」や「HELLO」には一致しません。
メタ文字
メタ文字は、正規表現で特別な意味を持つ特殊文字です。例えば、メタ文字 . 改行以外の任意の文字を表すために使用されます。もう一つの一般的なメタ文字は ^テキスト文字列の開始を示すために使用されます。例えば、正規表現 /^hola/ 「hello」で始まる任意のテキスト文字列に一致します。
キャラクタークラス
文字クラスは、特定のセット内の任意の文字を検索するために使用されます。例えば、正規表現 /[aeiou]/ テキスト文字列内の任意の母音に一致します。文字クラスで文字範囲を使用することもできます。例えば、正規表現 /[a-z]/ 任意の小文字に一致します。
数量詞
量指定子は、正規表現内の要素の出現回数を指定するために使用されます。例えば、量指定子 * 前の要素が 0 回以上出現できることを示します。数量詞 + 前の要素が 1 回以上出現することを示します。例えば、正規表現 /a+/ テキスト文字列内の 1 つ以上の "a" に一致します。
アンカー
アンカーは、テキスト文字列内の一致の位置を示すために使用されます。例えば、アンカー \b 単語の境界に一致します。例えば、正規表現 /bholab/ 「hello」という単語のみに一致します 完全な単語ただし、「hello」を一部に含む長い単語は一致しません。
これらは、JavaScriptにおける正規表現の基本的な構文のほんの一例です。この記事を進めていく中で、JavaScriptで正規表現を扱うためのより高度な概念やテクニックを詳しく見ていきます。
基本的な一致検索
正規表現で実行される最も一般的な操作の 1 つは、テキスト文字列内の一致を検索することです。 JavaScriptでは、メソッドを使うことができます search() テキスト文字列内で正規表現に最初に一致するものを検索します。例を見てみましょう:
const texto = "¡Hola, mundo!"; const regex = /mundo/; const indice = texto.search(regex); console.log(indice); // 7
この例では、次の方法を使用しています。 search() 正規表現の最初の一致を見つける /mundo/ テキスト文字列「Hello, world!」方法 search() 最初に見つかった一致のインデックスを返します。一致するものが見つからない場合は -1 を返します。
方法に加えて search()JavaScriptには、正規表現を扱うための便利なメソッドも用意されています。 match(), replace(), split() y test()。これらの各方法には独自の目的があり、特定のニーズに応じて使用できます。
修飾子とフラグの使用
JavaScript では、正規表現に修飾子とフラグを含めることができ、より柔軟でカスタマイズされた検索が可能になります。修飾子は正規表現の末尾に追加され、その動作を変更します。最も一般的な修飾子は次のとおりです。
私(無神経)
修飾子 i 大文字と小文字を区別しない検索を実行するために使用されます。例えば、正規表現 /hola/i 「hello」と「Hello」または「HELLO」の両方に一致します。
g (グローバル)
修飾子 g 最初に見つかった一致で停止するのではなく、テキスト文字列全体に対してグローバル検索を実行するために使用されます。例えば、正規表現 /a+/g テキスト文字列内の 1 つ以上の "a" のすべての出現に一致します。
m (複数行)
修飾子 m テキスト文字列内の複数行を検索するために使用されます。例えば、正規表現 /^hola/m テキスト文字列の各行の先頭にある単語「hello」に一致します。
修飾子に加えて、JavaScript では正規表現でフラグを使用することもできます。クラスを使用して正規表現を作成するときに、2番目のスラッシュの後にフラグが追加されます。 RegExp。最も一般的なフラグは次のとおりです。
私(無神経)
修飾語のように i、旗 i 大文字と小文字を区別しない検索を実行します。例えば、正規表現 new RegExp("hola", "i") 「hello」と「Hello」または「HELLO」の両方に一致します。
g (グローバル)
修飾語のように g、旗 g テキスト文字列全体に対してグローバル検索を実行します。例えば、正規表現 new RegExp("a+", "g") テキスト文字列内の 1 つ以上の "a" のすべての出現に一致します。
m (複数行)
修飾語のように m、旗 m テキスト文字列内の複数行を検索します。例えば、正規表現 new RegExp("^hola", "m") テキスト文字列の各行の先頭にある単語「hello」に一致します。
JavaScriptの正規表現で修飾子やフラグを使用すると、さまざまなケースや特定の要件に合わせて検索をカスタマイズするのに非常に役立ちます。ぜひ試してみて、コード内でこれらの機能を最大限に活用する方法を見つけてください。
メタ文字と特殊文字
メタ文字と特殊文字は、より強力で柔軟な検索を実行できるようにする正規表現の重要な要素です。すでにいくつかのメタ文字について言及しました。 . y ^ただし、正規表現で使用できるものは他にもたくさんあります。最も一般的なメタ文字と特殊文字をいくつか見てみましょう。
。 (ポイント)
メタ文字 . 改行以外の任意の文字を表すために使用されます。例えば、正規表現 /h.t/ 「hat」、「hot」、「hit」、および「h」で始まり「t」で終わるその他の 3 文字の単語と一致します。
\ (バックスラッシュ)
バックスラッシュは正規表現内の特殊文字をエスケープするために使用されます。たとえば、テキスト文字列内のリテラルピリオドを検索する場合は、バックスラッシュを使用してエスケープする必要があります。正規表現 /www\.google\.com/ テキスト文字列「www.google.com」に一致します。
\d (数字)
メタ文字 \d は0から9までの数字を検索するために使用されます。たとえば、正規表現 /\d+/ テキスト文字列内の 1 桁以上の数字と一致します。
\w (英数字)
メタ文字 \w 任意の英数字(大文字、小文字、数字、アンダースコア)を検索するために使用されます。例えば、正規表現 /\w+/ テキスト文字列内の 1 つ以上の英数字の任意の単語に一致します。
これらは、正規表現で使用できるメタ文字と特殊文字のほんの一例です。 JavaScript の正規表現に慣れてくると、検索やテキスト操作を絞り込むためのさまざまなオプションがあることに気付くでしょう。
文字クラスと範囲
文字クラスは正規表現のもう 1 つの重要な要素であり、特定のセット内の任意の文字を検索できます。 JavaScriptでは括弧を使うことができます [] 文字クラスを定義します。文字クラスと範囲の例をいくつか見てみましょう。
[エイオウ]
キャラクタークラス [aeiou] テキスト文字列内の任意の母音に一致します。例えば、正規表現 /[aeiou]/ テキスト文字列内の「a」、「e」、「i」、「o」、または「u」に一致します。
[az]
文字の範囲 [a-z] 英語のアルファベットの小文字と一致します。例えば、正規表現 /[a-z]/ テキスト文字列内の任意の小文字に一致します。
[0-9]
文字の範囲 [0-9] テキスト文字列内の 0 から 9 までの任意の数字に一致します。例えば、正規表現 /[0-9]/ 任意の 1 桁の数字に一致します。
[あざーず]
キャラクタークラス [A-Za-z] 英語のアルファベットの大文字または小文字に一致します。例えば、正規表現 /[A-Za-z]/ テキスト文字列内の任意の文字と一致します。
文字クラスと範囲を使用すると、正規表現で検索する特定の文字セットを定義できます。これらを使用して、特定のニーズや制限に合わせて検索をカスタマイズします。
数量詞と繰り返し
量指定子と繰り返しは正規表現の重要な要素であり、テキスト文字列内の要素の出現回数を指定できます。 JavaScript で最も一般的な量指定子をいくつか見てみましょう。
* (アスタリスク)
数量詞 * 前の要素が 0 回以上出現できることを示します。例えば、正規表現 /a*/ テキスト文字列内の 0 個以上の 'a' に一致します。
+(もっと)
数量詞 + 前の要素が 1 回以上出現することを示します。例えば、正規表現 /a+/ テキスト文字列内の 1 つ以上の "a" に一致します。
? (質問)
数量詞 ? 前の要素が 0 回または 1 回出現する可能性があることを示します。例えば、正規表現 /colou?r/ 「color」と「colour」の両方に一致します。
{n} (正確にn回)
数量詞 {n} 前の要素が正確に n 回出現する必要があることを示します。例えば、正規表現 /a{3}/ テキスト文字列内の 3 つの "a" に一致します。
{n,} (少なくともn回)
数量詞 {n,} 前の要素が少なくとも n 回出現する必要があることを示します。例えば、正規表現 /a{2,}/ テキスト文字列内の 2 つ以上の 'a' に一致します。
{n、m}
数量詞 {n,m} 前の要素が少なくとも n 回、最大で m 回出現する必要があることを示します。例えば、正規表現 /a{2,4}/ テキスト文字列内の 2 つ、3 つ、または 4 つの "a" に一致します。
これらは、正規表現で使用できる量指定子のほんの一例です。量指定子を使用すると、テキストの検索や操作で繰り返しのパターンを指定できるため、テキスト文字列から特定の情報を簡単に抽出できるようになります。
アンカーと単語境界
アンカーと単語境界は、テキスト文字列内の一致の位置を示すことができる要素です。これらの要素は、単語全体を検索したり、一致が行の先頭または末尾にあることを確認したりする場合などに特に便利です。アンカーと単語境界の例をいくつか見てみましょう。
\b (単語境界)
文字数制限 \b 英数字と英数字以外の文字の境界に一致します。例えば、正規表現 /\bjavascript\b/ 完全な単語として「javascript」のみに一致し、「javascript」を一部に含む長い単語には一致しません。
^ (行頭)
キャラクター ^ テキスト文字列内の行の始まりを示すために使用されます。例えば、正規表現 /^hola/ テキスト文字列の各行の先頭にある単語「hello」に一致します。
$ (行末)
キャラクター $ テキスト文字列の行末を示すために使用されます。例えば、正規表現 /mundo$/ テキスト文字列の各行末の「world」という単語と一致します。
\A (テキストの開始)
キャラクター \A これは、行の先頭だけでなく、テキスト文字列内のすべてのテキストの先頭を示すために使用されます。例えば、正規表現 /^\AHola/ テキスト全体の先頭にある「Hello」という単語と一致します。
\Z (テキストの終わり)
キャラクター \Z 行の終わりだけでなく、テキスト文字列内のすべてのテキストの終わりを示すために使用されます。例えば、正規表現 /Mundo\Z/ テキスト全体の末尾にある「World」という単語と一致します。
アンカーと単語境界を使用すると、テキスト文字列内の特定の場所での一致を検索できます。これは、一致が特定の位置にあることを確認したい場合に役立ちます。
グループとキャプチャ
グループとキャプチャは正規表現の高度な要素であり、部分式をグループ化して後で使用するためにキャプチャすることができます。グループとキャプチャがどのように機能するかを見てみましょう。
( ) (括弧)
括弧は 彼らはグループ分けをする 正規表現内の部分式。例えば、正規表現 /(d{2})-(d{2})-(d{4})/ se デート相手を探すのに使う 「dd-mm-yyyy」の形式です。グループ ( ) 日、月、年の値を個別に取得できます。
\1、\2、\3 (グループ参照)
グループ参照は、正規表現で以前にキャプチャされたグループを参照するために使用されます。例えば、正規表現 /(\w+) \1/ 同じ単語が繰り返される任意の単語に一致します。たとえば、「hello hello」、「world world」などです。
?: (非キャプチャグループ)
象徴 ?: 非キャプチャ グループを作成するために使用されます。これらのグループは、部分式をグループ化したいが、結果をキャプチャしたくない場合に使用されます。例えば、正規表現 /https?:\/\/(?:www\.)?google\.com/ 「http://www.google.com」と「https://google.com」の両方に一致しますが、URL の関連部分のみがキャプチャされます。
グループとキャプチャ機能を使うことで、正規表現をより効率的かつ読みやすい方法で構造化・整理できます。また、特定の値をキャプチャして、後でアプリケーションで使用することも可能になります。
正規表現を扱うための便利な方法
JavaScript には、正規表現を操作するための便利なメソッドがいくつか用意されています。これらのメソッドを使用すると、正規表現を使用してテキスト文字列の検索、置換、分割などの一般的な操作を実行できます。これらの方法のいくつかを見てみましょう。
マッチ()
方法 match() テキスト文字列内で正規表現に一致するものをすべて検索し、その結果を含む配列を返すために使用されます。例えば:
const texto = "¡Hola, mundo!"; const regex = /o/g; const coincidencias = texto.match(regex); console.log(coincidencias); // ["o", "o"]
この例では、次の方法を使用しています。 match() 正規表現に一致するものをすべて見つける /o/g テキスト文字列「Hello, world!」方法 match() 見つかったすべての一致を含む配列を返します。
置換()
方法 replace() テキスト文字列内の正規表現の一致を新しい値に置き換えるために使用されます。例えば:
const texto = "¡Hola, mundo!"; const regex = /mundo/; const nuevoTexto = texto.replace(regex, "amigo"); console.log(nuevoTexto); // "¡Hola, amigo!"
この例では、次の方法を使用しています。 replace() 正規表現の一致を置き換える /mundo/ テキスト文字列「Hello, world!」 「友達」という言葉のために。方法 replace() 置換が行われた新しいテキスト文字列を返します。
スプリット()
方法 split() 正規表現を区切り文字として使用して、テキスト文字列を部分文字列の配列に分割するために使用されます。例えば:
const texto = "Hola,mundo,amigo"; const regex = /,/g; const subcadenas = texto.split(regex); console.log(subcadenas); // ["Hola", "mundo", "amigo"]
この例では、次の方法を使用しています。 split() 正規表現を使用して、テキスト文字列「Hello,world,friend」を部分文字列の配列に分割します。 /,/g 区切りとして。方法 split() 結果の部分文字列を含む配列を返します。
テスト()
方法 test() 正規表現がテキスト文字列に一致するかどうかを確認するために使用されます。メソッドは true 一致した場合 false さもないと。例えば:
const texto = "Hola, mundo!"; const regex = /mundo/; const resultado = regex.test(texto); console.log(resultado); // true
この例では、次の方法を使用しています。 test() 正規表現が /mundo/ テキスト文字列「Hello, world!」に一致するものがあります。方法 test() 持ち帰る true 偶然の一致があるからです。
これらは、JavaScript で正規表現を操作するための最も一般的な方法の一部です。これらの各方法には独自の目的があり、特定のニーズに応じて使用できます。これらを試してみて、正規表現を使った作業をいかに簡単かつ迅速にできるかを確認してください。
よくある質問
JavaScriptにおける正規表現とは何ですか? JavaScriptにおける正規表現とは、文字列内のテキストを検索および操作するために使用される検索パターンです。
JavaScript で正規表現を作成するにはどうすればいいですか? JavaScriptの正規表現はクラスを使って作成されます RegExp または文字通り /patrón/.
正規表現における修飾子とフラグの違いは何ですか? 修飾子は正規表現の末尾に追加され、その動作を変更します。クラスを使用して正規表現を作成するときに、2番目のスラッシュの後にフラグが追加されます。 RegExp.
方法の違いは何ですか? match() と方法 test()? 方法 match() これは、テキスト文字列内の正規表現に一致するすべての部分を検索し、結果を含む配列を返すために使用されます。方法 test() 正規表現がテキスト文字列に一致するかどうかをチェックし、ブール値を返すために使用されます。
正規表現でグループを使用して特定の値を取得するにはどうすればよいですか? グループ ( ) 正規表現では、特定の部分式をキャプチャできます。これらのグループを参照するには、参照を使用します。 \1, \2, etc.
JavaScript で正規表現を操作するにはどのような方法を使用できますか? JavaScriptで正規表現を扱うための便利なメソッドには次のようなものがあります。 match(), replace(), split() y test()。これらの各方法には独自の目的があり、特定のニーズに応じて使用できます。
結論
正規表現は、JavaScriptでテキストを操作するための強力なツールです。正規表現の基本、構文、高度なテクニックを理解することで、テキスト文字列を効率的かつ正確に検索、置換、操作できるようになります。基本的なマッチングから、修飾子、グループ、その他の便利なメソッドの使用まで、JavaScriptプロジェクトで正規表現を最大限に活用する方法を学びました。
正規表現に対する理解と知識を深めるために、さまざまなパターンとユースケースを練習して実験することを忘れないでください。コードの効率と品質を向上させるために、ぜひ正規表現をご利用ください。