JavaScriptに正規表現を定義する方法は2つあります。
1.Regexpコンストラクター
var pattern = new regexp( "[bc] at"、 "i");
2つのパラメーターを受信します。1つは一致する文字列パターン、もう1つはオプションのフラグ文字列です。
2。リテラル
var pattern = /[bc] at /i;
正規表現のマッチングパターンは、3つのフラグ文字列をサポートしています。
G:グローバル、グローバル検索モード。最初の一致が検索されたときに検索を停止するのではなく、すべての文字列に適用されます。
I:Ingoreのケース、文字ケースを無視します。つまり、一致を決定するときにパターンと文字列のケースを無視します。
M:複数の行、マルチラインパターン、つまり、検索がテキストの行の終わりに達すると、次の行に一致があるかどうかを探し続けます。
正規表現を作成するこれら2つの方法の違いは、正規表現リテラルが常に同じregexpインスタンスを共有し、コンストラクターを使用して作成された各regexpインスタンスが新しいインスタンスであることです。
メタカラクター
メタカラクターは、特別な意味を持つキャラクターです。正規表現の主なメタチャラクターは次のとおりです。
([{ / ^ $ |)? * +。
メタチャールは、さまざまな組み合わせで異なる意味を持っています。
事前に定義された特殊文字
キャラクタークラスのシンプルクラス
一般に、正規表現には文字列内の文字に対応する文字がありますが、[]を使用して、特定の機能に一致するキャラクターのクラスを表す単純なクラスを構築できます。例えば:
[ABC]は、ブラケットA、B、C、またはその任意の組み合わせの文字を一致させることができます。
リバースクラス
[]はクラスを構築できるため、ブラケットにコンテンツが含まれていない対応するクラスを自然に考えることができます。このクラスはリバースクラスと呼ばれます。たとえば、[^abc]は、aまたはbまたはcではない文字を一致させることができます。
スコープカテゴリ
キャラクターを1つずつ一致させるには面倒で、試合のタイプは同じです。この時点で、「 - 」接続線を使用して、特定の閉じられた間隔の間のコンテンツを表すことができます。たとえば、すべての小文字を一致させると、次のように[AZ]を使用できます。
すべての0〜9を一致させることは、[0-9]を使用して表現できます。
事前定義されたクラス
上記で作成したいくつかのクラスで、正規表現は、次のように、一般的な文字を一致させるためにいくつかの一般的に使用される事前定義されたクラスを提供します。
| キャラクター | 同等のカテゴリ | 意味 |
| 。 | [^/n/r] | キャリッジリターンとラインブレークを除くすべての文字を一致させます |
| /d | [0-9] | 数字文字 |
| /d | [^0-9] | 非数字 |
| /s | [/t/n/x0b/f/r] | ホワイトスペース文字 |
| /s | [^/t/n/x0b/f/r] | 非白色文字 |
| /w | [A-ZA-Z_0-9] | 単語文字(文字、数字、アンダースコア) |
| /w | [^a-za-z_0-9] | 非単語文字 |
量子
上記の方法は、文字と一致するものです。キャラクターが連続して複数回表示される場合、上記の方法に応じて一致するのは非常に厄介です。したがって、繰り返し表示される文字を直接一致させることができる他の方法があるのではないかと思います。正規表現は、次のように、いくつかの数量詞を提供します。
| キャラクター | 意味 |
| ? | ゼロまたは1回(1回まで) |
| + | 1回以上(少なくとも1回)表示されます |
| * | ゼロまたは複数の発生(いつでも) |
| {n} | n回表示します |
| {n、m} | noからm倍に表示されます |
| {n、} | 少なくともn回表示されます |
貪欲で非グリーディモード
{n、m}のマッチング方法の場合、nまたはmを一致させる必要がありますか?これには、一致するパターンの問題が含まれます。デフォルトでは、数量詞はできるだけ多くのマッチング文字であり、たとえば貪欲モードと呼ばれます。
var num = '123456789'; num.match(// d {2,4}/g); // [1234]、[5678]、[9]右および非グリーディモードの場合、「?」を追加するだけです。数量ファイアの後。たとえば、{n、m}?、次のように、最小文字と一致することです。
var num = '123456789'; num.match(// d {2,4}?/g); // [12]、[34]、[56]、[78]、[9]グループ化
数量詞は、単一の文字で複数回のみ一致させることができます。特定の文字セットを複数回一致させたい場合はどうなりますか?正規表現では、ブラケットは文字列全体をグループとして定義できます。
Appleが4回表示されるという言葉を一致させたい場合は、次のように次のように(Apple){4}を一致させることができます。
AppleまたはOrangeが4回表示したい場合は、パイプ文字「|」を挿入できます。たとえば
(アップル|オレンジ){4}
グループ化、つまり複数のグループを使用して複数のブラケットが正規表現に表示される場合、一致する結果も一致します。たとえば、次のように一致します。
(Apple)/D+(オレンジ)
特定のパケットをキャプチャしたくない場合は、パケットの括弧の直前に疑問符とコロンに従う必要があります。
(?:Apple)/D+(オレンジ)
境界
また、正規表現は、次のような一般的に使用される境界マッチング文字をいくつか提供します。
| キャラクター | 意味 |
| ^ | xxから始めます |
| $ | xxで終わる |
| /b | [a-za-z_0-9]以外の文字を指す単語境界 |
| /b | 非単語境界 |
境界という言葉は位置と一致し、この位置の片側は単語を構成する文字ですが、反対側は非単語文字または文字列の開始または終了位置です。
プレビュー
Lookaheadは、特定の文字セットの次の発生と一致するために使用されます。
| 表現 | 意味 |
| exp1(?= exp2) | 一致の後にEXP2のEXP1が続きます |
| exp1(?!exp2) | その後EXP2ではないEXP1を一致させます |
例を参照してください:
Apple(?=オレンジ)
(/apple(?= orange)/).test('appleorange123 '); // true(/apple(?= orange)/).test('ApplePear345 '); //間違い別の例を見てみましょう:
Apple(?!オレンジ)
(/アプレ? // false(/apple(?!orange)/).test('applepear345 '); //真実上記の記事は、JavaScriptの正規表現の構文に関する決まり文句です。これは私があなたと共有するすべてのコンテンツです。参照を提供できることを願っています。wulin.comをもっとサポートできることを願っています。