正規表現をより効率的に使用するには、まず正規表現の仕組みを理解する必要があります。正規表現処理の基本手順を次に示します。
正規表現オブジェクトを作成するとき (通常のリテラルまたは RegExp コンストラクター)、ブラウザーは式を検証し、それをマッチング作業を実行するネイティブ コード プログラムに変換します。通常のオブジェクトを変数に割り当てると、重複を避けることができます。このステップを実行します。
正規クラスが使用状態になると、まず対象文字列の検索開始位置を決定します。文字列の開始文字、または正規表現でlastIndex属性を指定します。ただし、4 番目のステップから (一致の試行が失敗したため) 戻ったとき、この位置は、最後の一致の開始位置から次の文字の位置になります。
ブラウザ メーカーの最適化を回避するのが、正規表現エンジンのアプローチです。たとえば、正規表現が ^ で始まる場合、一致が失敗した場合に、IE と Chrome は位置を一致させることができますか?後続の位置を愚かに検索することは避けてください。もう 1 つの例は、3 番目の文字が x である文字列を照合することです。賢い方法は、最初に x を見つけてから、開始位置に戻ることです
演算子など) が見つかった場合は、正規表現を使用するたびに、必要に応じて、オプションから 1 つを選択する必要があります。現在のオプションが正常に一致した場合、正規表現は式のスキャンを続行し、他の部分も正常に一致した場合、一致する値が存在しない場合は一致が終了します。オプションで が見つかるか、後続の部分一致が失敗した場合、正規表現は最後の決定点までバックトラックし、残りのオプションの 1 つを選択します。このプロセスは、一致が見つかるか、正規表現 If すべての順列が見つかるまで続行されます。式内の量指定子と分岐オプションの組み合わせが失敗すると、マッチングは放棄され、文字列内の次の文字に移動して、プロセスが繰り返されます*,+?
或{2, }
), 正则表达式需决定何时尝试匹配更多字符; 如果遇到分支(来自|
var str = "<p>Para 1.</p>" + "<img src='1.jpg' alt="jsの正規表現の原理" >" + "<p>para 2.</p>" + "<p>p.</p>"; /<p>.*<\/p>/i.test(str);//method 1 /<p>.*?<\/p>/i.test(str);//method 2
以上がjsの正規表現の原理の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。