正規表現は、文字列マッチングのパターンを説明します。これは、文字列に特定のサブストリングが含まれているか、一致するサブストリングを交換するか、特定の文字列から特定の条件を満たすサブストリングを取り出すかを確認するために使用できます。
正規表現は頻繁に使用されていないため、頻繁に忘れがちです。次のエディターには、将来の視聴のために、ここで一般的に使用される関数と機能を簡潔にリストします。
regexpオブジェクトの2つの一般的に使用される関数があります
1。テスト関数
使用法:regexpobject.test(string)
return:true string stringにテキストがregexpobjectを一致させる場合、それ以外の場合はfalse。
説明:この方法について特別なものは何もありません。また、修飾子Gの特別な治療法はありません
例:
var url = 'http://www.baidu.com?a = 1&b=2&c = 3'rvar reg =/a = 1/;console.log(reg.test(url)); //出力の結果は真です
2。exec関数
使用法:regexpobject.exec(string)
返品:一致する結果が保存されている配列を返します。一致が見つからない場合、返品値はnullです。
説明する:
exec()メソッドは非常に強力です。これは一般的な方法であり、Test()メソッドと正規表現をサポートする方法よりも使用する方が複雑です。
exec()が一致するテキストを見つけた場合、結果配列が返されます。それ以外の場合は、nullを返します。この配列の0番目の要素は正規表現と一致するテキストであり、1つ目の要素は、regexpobjectの最初のサブエクスポンションと一致するテキストです。2番目の要素は、regexpobjectの2番目のサブエクスペッションなどに一致するテキストです。 Array要素と長さの属性に加えて、exec()メソッドは2つのプロパティを返します。インデックスプロパティは、テキストに一致する最初の文字の位置を宣言します。入力プロパティは、取得した文字列を保存します。 Global以外のRegexpオブジェクトのexec()メソッドを呼び出すと、返された配列はメソッドstring.match()を呼び出すことで返される配列と同じであることがわかります。
ただし、regexpobjectがグローバルな正規表現である場合、exec()の動作はわずかに複雑です。 RegexPObjectのLastIndexプロパティによって指定された文字で文字列の検索を開始します。 exec()が式に一致するテキストを見つけると、一致した後、regexpobjectのlastIndexプロパティを一致するテキストの最後の文字の次の位置に設定します。つまり、exec()メソッドを繰り返し呼び出すことにより、文字列内のすべての一致するテキストを反復させることができます。 exec()が一致するテキストを見つけることができなくなると、nullを返し、lastindexプロパティを0にリセットします。
例:
修飾子を使用した正規表現g
var url = 'http://www.baidu.com?a = 1&b=2&c = 3';var reg = /( [^?&=]+)=(] =*//console.log(reg.exec( // ["a = 1"、 "a"、 "1"、index:21、input: "http://www.baidu.com?a = 1&b=2&c=3" // ["b = 2"、 "b"、 "2"、index:25、input: "http://www.baidu.com?a = 1&b=2&c=3" // ["c = 3"、 "c"、 "3"、index:29、input: "http://www.baidu.com?a = 1&b=2&c = 3" //nullreg.lastindex = 0; //このコードは非常に重要です。Console.log(reg.exec(url))を理解することに注意してください。 // ["a = 1"、 "a"、 "1"、index:21、input:http://www.baidu.com?a = 1&b=2&c=3]
修飾子のない正規表現g
var url = 'http://www.baidu.com?a = 1&b=2&c = 3';var reg = /( [^?&=]+)=(] =*//console.log(reg.exec( // ["a = 1"、 "a"、 "1"、index:21、input: "http://www.baidu.com?a = 1&b=2&c=3" // ["a = 1"、 "a"、 "1"、index:21、input: "http://www.baidu.com?a = 1&b=2&c=3" // ["a = 1"、 "a"、 "1"、index:21、input: "http://www.baidu.com?a = 1&b=2&c=3" // ["a = 1"、 "a"、 "1"、index:21、input: "http://www.baidu.com?a = 1&b=2&c=3" console.log(reg.exec(url)); // ["a = 1"、 "a"、 "1"、index:21、input: "http://www.baidu.com?a = 1&b=2&c=3" console.log(reg.exec(url)); // ["a = 1"、 "a"、 "1"、index:21、input:http://www.baidu.com?a = 1&b=2&c=3]
何か違うことを見つけましたか?関数の説明を注意深く読むと、あなたは ^_ ^を理解するでしょう
規則性をサポートする文字列オブジェクトには4つの関数があり、そのうち2つだけを話します。
1。関数を一致させます
使用法:StringObject.Match(SearchValue | regexp)、ここではregexpモードについてのみ説明します
返品値:一致する結果を保存する配列。この配列の内容は、regexpがグローバルフラグgを持っているかどうかに依存します。
説明する:
Match()メソッドは、文字列StringObjectを取得して、1つ以上のテキストマッチングRegexpを見つけます。この方法の動作は、regexpにフラグgがあるかどうかに大きく依存します。
RegexpにフラグGがない場合、Match()メソッドはStringObjectで一致することのみを実行できます。一致するテキストが見つからない場合、match()はnullを返します。それ以外の場合、見つけた一致するテキストに関する情報を保存する配列を返します。アレイの0番目の要素はテキストに合わせて保存されますが、残りのストアテキストは正規表現のサブエクスペッションと一致します。これらの通常の配列要素に加えて、返された配列には2つのオブジェクトプロパティも含まれています。インデックス属性は、StringObjectのテキストと一致する開始文字の位置を宣言し、入力属性はStringObjectへの参照を宣言します。
RegexpにフラグGがある場合、Match()メソッドはグローバル検索を実行し、StringObjectですべてのマッチングサブストリングを見つけます。一致するサブストリングが見つからない場合、nullが返されます。 1つ以上の一致するサブストリングが見つかった場合、配列が返されます。ただし、グローバルマッチによって返される配列の内容は、前者とは大きく異なります。その配列要素は、StringObjectにすべてのマッチングサブストリングを保存し、インデックス属性または入力属性はありません。
例:
修飾子なしg
var url = 'http://www.baidu.com?a = 1&b=2&c = 3';var reg =/([^?&=])=([^?&=]*/; var result = url.match(reg); console.log(result); // ["a = 1"、 "a"、 "1"、index:21、input: "http://www.baidu.com?a = 1&b=2&c=3" //21Console.log(result.input); //http://www.baidu.com?a = 1&b=2&c=3"
修飾子gを使用します
var url = 'http://www.baidu.com?a = 1&b=2&c = 3';var reg =/([^?&=]*/g; var result = url.match(reg); console.log(result); // ["a = 1"、 "b = 2"、 "c = 3"] console.log(result.index); //undefinedConsole.log(result.input); //未定義
何か違うことを見つけましたか?関数の説明を注意深く読むと、あなたは ^_ ^を理解するでしょう
2。関数を交換します
使用法:StringObject.Replace(regexp/substr、置換)
返品値:最初の一致またはregexpのすべてのマッチを交換した後に取得した新しい文字列。
説明:StringStringObjectの交換()メソッドは、検索および交換操作を実行します。 StringObjectのRegexpを一致させるサブストリングを探し、それらのサブストリングを置換に置き換えます。 RegexpにグローバルフラグGがある場合、置換()メソッドはすべての一致するサブストリングを置き換えます。それ以外の場合は、最初の一致するサブストリングのみを置き換えます。
交換は文字列または関数です。文字列の場合、各一致は文字列に置き換えられます。しかし、交換の$文字には特定の意味があります。次の表に示すように、パターンマッチングから得られた文字列が交換に使用されることを示しています。
| キャラクター | テキストを交換します |
|---|---|
| 1ドル、2ドル、... 99ドル | Regexpの1番目から99番目のサブエキシピューズに一致するテキスト。 |
| $& | regexpに一致するサブストリング。 |
| $ ` | 一致するサブストリングの左側にテキスト。 |
| $ ' | 一致するサブストリングの右側にテキスト。 |
| $$ | 直接測定記号。 (それは、それを$シンボルに置き換えたい場合は、2つの$を書くことを意味します) |
例:
修飾子なしg
var url = 'http://www.baidu.com?a = 1&b=2&c = 3';var reg =/([^?&=])=([^?&=]*/; var url1 = url.replace(reg、function(a、b、c、d、e){console.log(c、b、c、d、d、d、d、e) http://www.baidu.com?a = 1&b=2&c=3return 'ok';})console.log(url1); //http://www.baidu.com?ok&b=2&c=3修飾子gを使用します
var url = 'http://www.baidu.com?a = 1&b=2&c=3';var reg =/([^?&=]*/g; var url1 = url.Replace(reg、function(a、b、c、d、e){console.log(a、b、c、d、 A = 1、A、1、21、http://www.baidu.com?a = 1&b=2&c = 3、b、2、25、http://www.baidu.com? http://www.baidu.com?a = 1&b=2&c=3return 'ok';})console.log(url1); //http://www.baidu.com?ok&ok&ok2番目のパラメーターが文字列の場合
var url = 'http://www.baidu.com?a = 1&b=2&c = 3';var reg =/([^?&=]+)=([^?&=]*/; //モディファイアなしgvar url1 = url.replace(reg、 "$&")console.log(url1); //http://www.baidu.com?a = 1&b=2&c = 3var url1 = url.Replace(reg、 "$ 1")console.log(url1); //http://www.baidu.com?a&b=2&c=3var url1 = url.replace(reg、 "$ 2")console.log(url1); //http://www.baidu.com?1&b=2&c=3var url1 = url.replace(reg、 "$ '")console.log(url1); //http://www.baidu.com?&b = 2&c=3&b=2&c=3var reg =/([^?&=]+)=([^?&=])*/g; // modifier gvar url1 = url.replace(reg、 "$&")console.log(url1); //http://www.baidu.com?a = 1&b=2&c = 3var url1 = url.Replace(reg、 "$ 1")console.log(url1); //http://www.baidu.com?a&b&cvar url1 = url.replace(reg、 "$ 2")console.log(url1); //http://www.baidu.com?1&2&3var url1 = url.replace(reg、 "$ '")console.log(url1); //http://www.baidu.com?&b=2&c=3&c=3&
上記は、編集者によって導入されたJS文字列および正規表現の一致、交換、exec、およびその他の機能の包括的な分析です。私はそれが誰にでも役立つことを願っています。ご質問がある場合は、メッセージを残してください。編集者は、すべての人に時間内に返信します。 wulin.comのウェブサイトへのご支援ありがとうございます!