兄弟、私は最近JavaScriptを学び、正規表現を学んでいたときに知識ポイントが少し厄介であることを見たので、それを要約するためにブログを書きました。
意味
JavaScriptでReg Expを定義する方法は2つあります。
1)新しいexp:var exp1 = new exp( "ABC");
2)2つの間にパターンを直接配置:var exp2 = /abc /; //注記。 。二重引用符はありません。追加すると、文字列になります
特殊文字
視覚的には、特殊文字はPerlの特徴と同じです。 。直接使用してください
/d桁の文字
/W英数字(「単語文字」)
/s Whitespace文字(スペース、タブ、新しいラインなど)
/d桁ではない文字
/w非アルファニュミュアル文字
/s非白文字文字
。期間は、NewLinesを除くすべての文字と一致します
覚えておくべき非常に簡単な方法があります:
d =数字で数字です
w = wordだから文字です
s =スペースしてスペースです
すべての大文字は逆です。 。
ブラケット[]
ブラケットにパターンを置くことは、任意のキャラクターが一致している限り、それが真実であることを意味します。 (それはJavaやPerlと同じです)
例えば
コードコピーは次のとおりです。
console.log(/[01]/。test( "023424")); // 真実
console.log(/[01]/。test( "13424")); // 真実
console.log(/[01]/。test( "23424")); // 間違い
ブラケット()
それは、括弧内のすべてが真実でなければならないことを意味します
例えば
コードコピーは次のとおりです。
console.log(/[01]/。test( "013424")); // 真実
console.log(/[01]/。test( "13424")); // 間違い
console.log(/[01]/。test( "230424")); // 間違い
console.log(/[01]/。test( "230142401")); // 真実
数量詞
Javaと同じです。 。このテーブルはとても良いです。 。私はいつもそれを使うのが好きでした
| よく深い | 気が進まない | 所有 | 意味 |
|---|---|---|---|
| x? | x ?? | x?+ | X、一度かどうか |
| x* | x*? | x*+ | x、ゼロ以上 |
| x+ | x+? | x ++ | X、1回以上 |
| x {n} | x {n}? | x {n}+ | x、正確にn倍 |
| x {n、} | x {n、}? | x {n、}+ | X、少なくともn回 |
| x {n、m} | x {n、m}? | x {n、m}+ | X、少なくともnですが、 m倍以下 |
式オブジェクト関数
1)テストは非常に簡単です。テスト(...)で文字列をテストするだけで、この関数はtrue/falseを返します。
2)exec、この関数は一致する文字列が見つからない場合にnullを返します。見つかった場合、配列が返されます。これには、一致の文字列が含まれています。
3)string.replace(expression1、string1)この関数は、式の一致部分をstring1に置き換えます。 string1では、以前の式で括弧グループを使用できます
、その一部を交換します。たとえば、「co-ol」.replace(/[/w] +/- [/w]+/、 "$ 2- $ 1"); //「OL-CO」は9ドルまで使用できます
4)string.replace(式、function)これは拡張バージョンであり、非常に強力です。機能を通じて必要な出力を定義できます。特定の使用法はここに記載されていません、参照してください
クリックしてリンクを開きます
REG式を動的に生成します
この方法は、REG EXPで何かを使用したいときに適用できます。ランタイムについてのみ知っています
reg expを生成するには、文字列を使用してreg expルックを作成するだけで、Expのコンストラクターを使用する必要があります。 (記事の冒頭で言及)
例えば:
コードコピーは次のとおりです。
var name = "親愛なる"
「ああ、私の愛する」。 // 何てことだ
ただし、名前に特殊文字がある場合は、正規表現で使用される場合があり、上記の方法でエラーが発生することがよくあります。
したがって、その場合、入力文字列の各文字を次のようなバックスラッシュで接頭することができます。
コードコピーは次のとおりです。
var name = df [] vxv;
var expname = name.replace( "/[^/w/s]/g"、 "// $&");
「私の名前はdf [] vxv」.replace(new exp(name)、 "bob"); //私の名前はボブです