RegExp クラス
RegExp オブジェクトのコンストラクターは 1 つまたは 2 つのパラメーターを取ることができます
最初のパラメーターは、一致する必要があるパターンを記述するパターン文字列です。2 番目のパラメーターがある場合、このパラメーターは次のとおりです。指定された追加の処理命令。
1. 基本
1.1 RegExp オブジェクト
test() メソッド
を使用して、一致するかどうかをテストします。指定された文字列 (1 つのパラメーターのみ) がこのパターンに一致する場合は true を返し、そうでない場合は false を返します
var sToMatch = "cat";
var reCat = /cat/; //正規表現リテラルは Perl スタイルの構文を使用します
alert(reCat.test(sToMatch) ); // "true" を出力します
exec() メソッド には文字列パラメーターがあり、配列を返します。配列内の最初のエントリが最初の一致であり、その他は後方参照です。 (つまり、配列内に 1 つだけ存在し、最初に一致するものです)
var strAAA = "コウモリ、ネコ、fAt baT、faT ネコ"
var regAt = new RegExp("at", "gi"); >var arr = regAt.exec( strAAA); //arr[0] は "at"、arr.index 値は 3、arr.lastIndex 値は 5
match() メソッド
は、すべての一致の配列に含まれる文字列を返します。
var strAAA = "コウモリ、ネコ、fAt baT、faT ネコ";
var regAt = new RegExp("at", "gi");
var arrMatch = strAAA.match( regAt); //注: String.match (パラメータは一致する文字です) は上記の
search() メソッドの逆です
は、indexOf() に似ており、文字列内に出現する値と一致する位置。そのパラメータは単なる部分文字列ではなく RegExp オブジェクトです。
var strAAA = "コウモリ、ネコ, a fAt baT, a faT cat";
var regAt = new RegExp("at", "gi");
varindex = strAAA.search(regAt); //最初の出現は「3」を出力します位置は 3
1.2 拡張文字列メソッド
replace() メソッド
は最初のパラメーターを 2 番目のパラメーターで置き換えることができ、ここでの最初のパラメーターは正規表現モードにすることもできます。
var strBBB = "空は赤いです。";
//上の文のすべての s を置換し、正規表現を使用して一致するものをすべて検索します。
var strNewBBB = strBBB.replace(/ s/gi, " ##"); //すべての "s" (大文字と小文字に関係なく) を ##
に置き換えてアップグレードします。2 番目のパラメーターは関数
var sToChange = "空は赤いです。";
var reRed = /red/; >var sResultText = sToChange.replace(reRed, function(sMatch) {
return "blue";
});
alert(sResultText);
この例では、関数内の sMatch の値は常に "red" です (これが唯一の一致するパターンであるため)。最初に出現した "red" は、関数の戻り値 "blue" に置き換えられます。
Append :
だと思います。これは、本の「一致するパターンはこれだけであるため」という文の意味です。replace には 2 つのパラメータしかありません。その関数のパラメータ sMatch は、前の最初のパラメータの値である必要があります。パラメータ、唯一一致するパターン。 。 。
split() メソッド
var reComma = /,/;
var arrColors = sColor.split(reComma); // カンマごとに分割
(arrColors.length); //「4」を出力します
正規表現 reComma では、コンマの前にバックスラッシュが必要です。コンマは文法上特別な意味を持ち、エスケープする必要があるためです。
2. シンプル モード
2.1 メタ文字
正規表現で使用されるすべてのメタ文字は次のとおりです:
( [ { ^ $ | ) * .これらのメタ文字を使用する場合は常に、エスケープする必要があります。つまり、前にバックスラッシュを付ける必要があります。
例:
var reQMark = /?/; //Escape
var reQMark=new RegExp("\?"); //バックスラッシュ自体が二重エスケープであることに注意する必要があります。
もエスケープする必要があるため、将来的には最初のケースであるリテラル構文を使用するようにする必要があります。 Perl スタイル
2.2 特殊文字の使用
さらに、次の表にリストされているように、その他の事前定義された特殊文字がいくつかあります。 文字の説明
------ -----------------------------------------------
t タブ文字
n 改行文字
r 復帰文字
f 改ページ文字
a 警告文字
e エスケープ文字
cX X に対応する制御文字
b フォールバック文字
v 垂直タブ文字
支配的な量指定子は、文字列全体との一致のみを試みます。文字列全体が一致しない場合は、それ以上の試行は行われません。実際、支配的な量指定子は、簡単に言えば、万能です。
----------------------------------------------- --- --------------------------
強欲と怠惰の支配の説明
----------- ---------------------------------------------------- ---------
? ? 0 個以上の出現
*? 1 つ以上の出現
{n}? n} 正確に n 回出現します
{n,m} {n,m}? {n,m} は少なくとも n 回、最大で m 回出現します
{n,} {n,}?少なくとも n 回表示されます
- -------------------------------------- --------- ------------------
上記の 3 つの量指定子をよりよく理解するには、以下の例を見てください。
var str = "abbbaabbbaaabbb1234 ";
var reg1 = /.* bbb/g;
var reg2 = /.*?bbb/g;
//var reg3 = /.* bbb/g; //Visual でエラーが報告されましたStudio2008....
var arrMatches1 = str.match(reg1);
var arrMatches2 = str.match(reg2)
//var arrMatches3 = str.match(reg3); ("Greedy:" arrMatches1.join( ",") "nLazy:" arrMatches2.join(","));
主な違いはマッチング プロセスです。