ホームページ  >  記事  >  ウェブフロントエンド  >  JavaScript学習ノート(14)正規表現_基礎知識

JavaScript学習ノート(14)正規表現_基礎知識

WBOY
WBOYオリジナル
2016-05-16 18:36:031123ブラウズ

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 sColor = "red,blue, yellow,green";
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(","));
主な違いはマッチング プロセスです。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。