兄さん、最近JavaScriptを勉強しているのですが、正規表現を勉強する際に知識のポイントが少し分かりにくいことがわかったので、まとめとしてブログを書きました。
定義
JavaScript で reg exp を定義するには 2 つの方法があります:
1) new exp を使用します: var exp1 = new exp("abc");
2) パターンを 2 つの /s の間に直接配置します: var exp2 = /abc/; 注。 。二重引用符を追加しないと、文字列になります。
特殊文字
特殊文字は Perl のものと同じであることがわかります。 。直接使用してください
d 数字文字
w 英数字文字 (「単語文字」)
s 空白文字 (スペース、タブ、改行など)
D 数字ではない文字
W 英数字以外の文字
S 空白文字以外の文字
。ピリオドは改行を除くすべての文字に一致します。
非常に簡単な覚え方があります。
d = 数字です。数字
w = 単語 つまり文字です
s = スペース つまりスペースです
すべての大文字が反転されます。 。
括弧 []
括弧内にパターンを入れることは、任意の文字と一致する限り true であることを意味します。 (Java や Perl と同じ)
例:
console.log(/[01]/.test("023424")); // true
console.log(/[01]/.test("13424") )) ; // true
console.log(/[01]/.test("23424")); // false
括弧 ()
は、真であるためには括弧内のすべてと一致する必要があることを意味します
たとえば、
console.log(/[01]/.test("013424")); // true
console.log(/[01]/. test("13424")); // false
console.log(/[01]/.test("230424")); // false
console.log(/[ 01]/.test("230142401 ")); // true
量子
は Java と同じです。 。 この時計はとても良いです。 。兄さん、私はいつも
を使うのが好きです
Greedy |
Reluctant |
Possessive |
Meaning |
X? |
X?? |
X? |
X, once or not at all |
X* |
X*? |
X* |
X, zero or more times |
X |
X ? |
X |
X, one or more times |
X{n} |
X{n}? |
X{n} |
X, exactly n times |
X{n,} |
X{n,}? |
X{n,} |
X, at least n times |
X{n,m} |
X{n,m}? |
X{n,m} |
X, at least n but not more thanm times |
式オブジェクト関数
1) テスト これは非常に簡単です。テストする文字列を test(...) に入れるだけです。この関数は true/false を返します。一致を表します。 /unmatch
2) exec、一致する文字列が見つからない場合、この関数は null を返します。見つかった場合は、配列を返します。これには、
3 の順で一致する文字列が含まれます。 .replace(expression1, string1) この関数は、expression 内の一致部分を string1 に置き換えます。string1 では、前の式の括弧で囲まれたグループ
を使用して、その特定の部分を置き換えることができます。 たとえば、 "co-ol".replace(/[w] -[w] /,"$2-$1"); //"ol-co" は $9
4)String まで使用できます。 replace (式、関数) これは拡張バージョンであり、関数を通じて必要な出力を定義できます。具体的な使い方はここには記載しておりませんので、こちらを参照してください。
クリックしてリンクを開きます
reg 式の動的生成
reg exp で使いたいものが でしか分からない場合runtime では、このメソッドを
に適用して reg exp を生成できます。実際には、string を使用して reg exp の外観を構築し、次に Exp のコンストラクターを使用するだけです。 (記事の冒頭に記載)
例:
var name = "親愛なる"
"ああ、親愛なる".replace(new Exp(name), "god") // ああ、なんてことだろう
しかし、名前に正規表現で使用される可能性のある特殊文字が含まれている場合、上記の方法は失敗することがよくあります。
その場合、入力文字列の各文字の前にバックスラッシュを追加できます。例:
var expName = name.replace("/[^/w/s]/g"," \$&");
"私の名前は df[]vxv".replace(new Exp(name), "Bob"); // 私の名前はボブです