ホームページ >ウェブフロントエンド >jsチュートリアル >JavaScript 正規表現の概要_JavaScript スキル

JavaScript 正規表現の概要_JavaScript スキル

WBOY
WBOYオリジナル
2016-05-16 17:47:561207ブラウズ

文字列オブジェクト
1, str.match(RegExp)
str 内の RegExp に一致する文字列を検索し、配列に保存して返します。
RegExp がグローバル設定でない場合(/g )、一度だけ一致します

コードをコピー コードは次のとおりです:

( "abc112dwfwabcwef2abc3wfwabcasqf453abcqwf24j234h").match (/abcd*/g);
//結果
["abc112", "abc", "abc3", "abc", "abc"]

このメソッドでは、正規表現がグローバル一致パターン (g タグ) ではない場合、最初の要素は一致した文字列になり、残りは正規表現でキャプチャされた文字列になり、配列には 2 つの属性があります。
検出用の入力 String
index は、文字列の検出に使用される文字列の開始位置と一致します。
(これら 2 つの属性については、RegExp.exec() メソッドを参照してください)
2. str.search(regExp)
RegExp に一致する最初の文字列の位置を返します。
このメソッドは regExp の lastIndex 属性も無視し、常に文字列の先頭から取得します。
3. str.replace(RegExp,replaceText)
RegExp にグローバル設定がない場合、グローバル パターンを使用すると 1 回だけ一致します。一致する文字列をすべて置き換えます。
キャプチャ グループのマッチングが RegExp で使用されている場合、 replaceText の $ には特別な意味があります
$1, $2,...,$99 // RegExp の 1 番目から 99 番目の部分式に一致するテキスト。
$& // 正規表現に一致する部分文字列。
$` // 一致した部分文字列の左側のテキスト。
$' // 一致した部分文字列の右側のテキスト。
$$ // $ 記号自体と一致します。
RegExp 内のキャプチャ グループの数を考慮する必要があることに注意してください。キャプチャを 2 つだけ設定した場合、$3 は特別な意味を持たなくなります。
("123ab12c11d_4532").replace(/a(bd*)c (d*)d/,"$1@$2-")
//次の結果が得られます:
"123b12@11-_4532"
4. str.replace(RegExp,function)
str.replace の 2 番目のパラメータは関数にすることができ、関数の戻り値は一致した文字の置換内容として使用されます。
RegExp をグローバルに一致させたい場合でも、グローバル g タグが必要です。
関数のパラメータは次のとおりです:
一致文字列、
設定されたキャプチャ部分文字列 (複数)、
一致文字列の開始位置、
一致に使用される元の文字列
注、定義してくださいRegExp に設定したキャプチャグループ数に応じて関数パラメータの数が決まります。パラメータが少なすぎると、「一致する文字列の開始位置」と「一致する元の文字列」がパラメータに表示されない可能性があります。もちろん、関数内で argument オブジェクトを使用してこの問題を解決することもできます。arguments(arguments.length-2) は一致する文字列の開始位置であり、arguments(arguments.length-1) は一致するために使用される元の文字列です。 。
コードをコピー コードは次のとおりです:

var newStr = ("123ab12c11d_4532")。 replace(/ a(bd*)c(d*)d/g,function(s,s1,s2,pos,oldStr){
return "@" s1 "@" s2 "@";
} ) ;
//
"123@b12@11@_4532"
を取得します
5. str.split(RegExp[,limit])
一致する文字列を使用して文字列 str を配列に分割します。limit はオプションであり、返される配列の長さを制限するために使用されます。 >("ada2afa4fcas6afa").split(/d/,3) // "ada,afa,fcas"

6. RegExp.exec("str") メソッド str 検索このメソッドを実行するたびに、一致するのは 1 回だけであることに注意してください。複数回一致させるには、RegExp を /g に設定し、exec() メソッドを複数回実行する必要があります。各一致の戻り値は result です。 = RegExp.exec( "str")
結果は配列であり、この配列の長さは 1 で、配列要素は見つかった一致する部分文字列です。
さらに、この配列には 2 つの追加属性が割り当てられます。 🎜>result.index 一致する部分文字列が元の文字列の先頭にあることを示します
result.input は元の文字列です
一致する部分文字列が見つからない場合は、result = null を返し、RegExp.lastIndex=0 を設定します
RegExp.lastIndex は正規表現の属性で、現在の一致が文字列内のどの位置から開始されるかを示します。初期値は 0 です。
RegExp がグローバルに設定されている場合、文字列を一度照合した後、同じ RegExp を使用して新しい文字列と照合します。最初に手動で RegExp.lastIndex=0 を設定してください。
RegExp がグローバル マッチング モードでない場合は、別のモードを作成しましたプログラム内でループを実行し、戻り値の結果に基づいて照合を終了するかどうかを決定し、文字列を照合しようとします。その後、照合条件を満たす部分文字列が存在する限り、必然的に無限ループが発生します。 -globalmatching は次の場合にのみ適用されます。文字列は 1 回照合され、照合操作が実行されるたびに最初の部分文字列が照合され、返される結果は空ではありません。これは比較的犯しやすい間違いです。


コードをコピーします コードは次のとおりです:
var str = "1Visit W3School、W3School はWeb テクノロジーを学ぶ場所。";
var patt = new RegExp("W3School","g");
var result;
document.write(patt.lastIndex "
");
document.write("======================================
while ((result = patt.exec(str)) != null) {
document.write(patt.lastIndex "
");
document.write (result.constructor.name "
");
document.write(result.length "
");
document.write(result[ 0] "
");
document.write(result.index "
");
document.write(result.input "
" );
document.write("===================================
") ;
}
document.write(patt.lastIndex "
");
// 演算結果:
========= ===== =======================
配列
W3School
W3School にアクセスしてください。W3School は Web テクノロジーを学ぶ場所です.
= ==================================
配列
W3School
W3School にアクセスしてください。W3School は Web テクノロジーを学ぶ場所です。
================================ =======


7. RegExp.test("str") メソッド
このメソッドは、返すだけである点を除いて RegExp.exec と似ています。 true または false RegExp.lastIndex 意味は同じです (テストメソッドと実行メソッドのどちらを使用するかに関係なく、RegExp のプロパティです)
テストメソッドと実行メソッドが同じ RegExp を使用する場合続けて、手動で RegExp.lastIndex=0 を設定する必要がある場合があります。この方法は、同じ RegExp オブジェクトの lastIndex 属性を共有することです


コードをコピーします コードは次のとおりです: str = "1W3School にアクセスしてください。W3School は Web テクノロジーを学ぶ場所です。"; var patt = new RegExp("W3School","g");結果; 結果 = patt.test(str);
アラート(結果); //真
結果 = patt.test(str); //真>result = patt.test(str);
alert(result); //false


IE9、Chrome および Firefox の新しいバージョンでは、str.match(reg) が実行された後、グローバル一致があるかどうか、または一致結果があるかどうかに関係なく、reg.test(str) の実行後、lastindex がリセットされます (reg.lastIndex = 0)。通常の一致が非グローバル一致の場合、lastindex はリセットされます、re.lastIndex = 0。IE8 以下では、通常の一致が実行された後、一致する結果がない場合を除き、それ以外の場合、re.lastIndex は文字列の末尾に一致する最後の文字の位置 1 になります。つまり、lastIndex は一致しません。リセットされました。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。