replace() メソッドのパラメータ置換には、文字列の代わりに関数を使用できます。この場合、関数は一致するたびに呼び出され、関数が返す文字列が置換テキストとして使用されます。この関数の最初のパラメータは、パターンに一致する文字列です。次の引数は、パターン内の部分式に一致する文字列です。このような引数は 0 個以上存在できます。次のパラメータは、一致が発生する stringObject 内の位置を宣言する整数です。最後のパラメータは stringObject 自体です。
次に、JavaScript の正規表現を置き換えるいくつかの方法を示します (セカンド パーティやサードパーティのメソッドなど)。
//次の例は、URL の 2 つのパラメーターを取得し、urlRewrite の前に実際の URL を返すために使用されます。
var reg=new RegExp("(http://www.qidian.com/BookReader/)(\d ),(\d ).aspx", "gmi") ;
var url="http://www.qidian.com/BookReader/1017141,20361055.aspx";
//方法 1、最も単純で最もよく使用される方法
var rep=url.replace( reg,"$1ShowBook.aspx?bookId=$2&chapterId=$3");
alert(rep);// メソッド 2、固定パラメーターを使用する
var rep2=url.replace(reg ,function(m,p1,p2,p3){return p1 "ShowBook.aspx?bookId=" p3 "&chapterId=" p3}); /メソッド 3、非固定パラメータ コールバック関数を使用します
var rep3=url.replace(reg,function(){var args=arguments; return args[1] "ShowBook.aspx?bookId=" args[2] " &chapterId=" args[3] ;});
alert(rep3);
//メソッド 4
//メソッド 4 はメソッド 3 と非常に似ています。置換された文字列。個別に使用することもできます。 パラメータを取得します。
function capText()
{
bookId=args[2]; ;
return args[1] "ShowBook.aspx ?bookId=" args[2] "&chapterId=" args[3];
}
var rep4=url.replace(reg,capText); 🎜>alert(rep4);
alert(bookId );
// 正規表現のグループ化を取得するために、 test メソッドと exec メソッドを使用してグループ化を取得することもできますが、メソッドは異なります
コードをコピー
コードは次のとおりです。
var reg2=new RegExp("(http://www .qidian.com/BookReader/)(\d ),(\d ).aspx","gmi"); >var m=reg2.exec("http://www.qidian.com/BookReader/1017141 ,20361055.aspx"); var s=""; //Getすべてのグループ
コードをコピー
コードは次のとおりです:
コードをコピーします
コードは次のとおりです:
var reg3=new RegExp("(http://www.qidian.com/BookReader) /)(\d ),(\d ).aspx","gmi");
reg3.test("http://www.qidian.com/BookReader/1017141,20361055.aspx");
コードは次のとおりです:
alert(RegExp.$1);
alert(RegExp.$3);
var str="www.baidu.com"; //str.format("OK","q")
str.replace(new RegExp("(\.)(bai)du","g"),function(){ for(var i=0;i{ document.write(arguments[i] "}
document.write("---------------------------- -------------- -------
");
});
2 つの例 (証明、置換。通常のパラメータを入力した場合と文字でパラメータを渡した場合の結果は異なります):
alert("123".replace("1",function(){var un;return un;})); // ポップアップ unknown23
alert(" 123".replace(new RegExp("1") ),function(){var un;return un;})); //ポップアップ 23