JavaScript の正規表現サポートは世界最高のものの 1 つであると広く考えられていますが、正規表現を複製する方法が組み込まれていないという欠点が 1 つあります。これは、既存の正規表現に似ているが若干の変更を加えた新しい正規表現を作成する必要がある場合に問題になる可能性があります。
問題は、正規表現はオブジェクトであるため、あるオブジェクトを別のオブジェクトに代入するだけでは正規表現をコピーできないことです。次のコードを考えてみましょう -
リーリーこのコードでは、2 つの同一の正規表現を作成します。しかし、そのうちの 1 つに小さな変更を加えたい場合はどうすればよいでしょうか?
リーリー2 つの正規表現は、最初はお互いのコピーであったにもかかわらず、異なっています。これは、正規表現が変更可能であり、作成後に変更できるためです。
正規表現のクローンを作成する 1 つの方法は、既存の正規表現リテラルに似た新しい正規表現リテラルを作成することです。たとえば、次のような正規表現があるとします -
リーリー正規表現リテラルを使用して、-
と同一の新しい正規表現を作成できます。 リーリーこのメソッドはシンプルで簡単ですが、正規表現がリテラルである場合 (つまり、新しい RegExp() コンストラクターを使用して作成されていない場合) にのみ機能します。
正規表現のクローンを作成するもう 1 つの方法は、RegExp() コンストラクターを使用することです。これにより、既存の正規表現に基づいて、いくつかの変更を加えた新しい正規表現を作成できます。たとえば、次のような正規表現があるとします -
リーリーRegExp() コンストラクターを使用して、それと同一の新しい正規表現を作成できます -
リーリーこの方法は前の方法よりも若干複雑ですが、非リテラル正規表現のクローンを作成できるという利点があります。
正規表現の複製にはいくつかの利点があります。まず、類似した正規表現を多数作成する必要がある場合に時間を節約できます。次に、既存の正規表現に小さな変更を加える必要がある場合に、エラーを回避するのに役立ちます。最後に、正規表現にわかりやすい名前を付けることで、コードを読みやすくすることができます。
正規表現の複製の欠点の 1 つは、コードがより複雑になることです。たとえば、次のような正規表現がある場合 -
リーリー同様の新しい正規表現を作成したいが、大文字と小文字を区別しないフラグを設定するには、これを行う必要があります -
リーリーこれは、大文字と小文字を区別しないフラグを設定して新しい正規表現を単純に作成するよりも複雑です -
リーリー要約すると、正規表現のクローン作成は便利なツールですが、いくつかのトレードオフが伴います。コードが複雑になる可能性がありますが、時間を節約し、エラーを回避することもできます。
以上がJavaScript で指定された正規表現のクローンを作成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。