replace メソッドの構文は次のとおりです: stringObj.replace(rgExp, replaceText) ここで、stringObj は文字列 (string)、reExp は正規表現オブジェクト (RegExp) です。 or は文字列で、replaceText は見つかった文字列の置換です。 。皆さんの理解を助けるために、以下に簡単な例を挙げてみましょう
Js コード
<スクリプト言語="javascript ">
var stringObj="中國人民共和国、中國人民";
//タイプミス「中國」を「中国」に置き換えます //元の文字列 stringObj の値は変更されません
var newsstr=stringObj.replace("Zhonggu","中国");
「中国」の場合値は変更されていません
中国");
あなたが私より賢いなら、上記の例を読んだ後、2 番目のタイプミス「Zhonggu」は変更されず、置き換えられていないことがわかるでしょう。 「China」を使用すると、2 番目のタイプミス「Zhonggu」を置換する二次置換メソッドを実行できます。プログラムは次のように改善されます。
Js コード
コードをコピー
//タイプミス「中國」を「中国」に置き換えます //元の文字列 stringObj の値は変更されません
var newstr=stringObj.replace("中区","中国");
newsstr=newstr.replace("中区","中国");
「Zhonggu」の値は「中国」です
は変更されていません
中国");
中国");よく考えてみましょう。N^N 乗のタイプミスがある場合、そのタイプミスを置き換えるために N^N 乗の置換メソッドも実行する必要がありますか? 心配しないでください。正規表現はありません。式の後にreplaceメソッドを実行する必要があります。 プログラムを改良した後のコードは以下のとおりです
。
Js コード
コードをコピー
コードは次のとおりです:
<スクリプト言語="javascript "> replace(reg,"China");
alert(newstr)
Js コード
コードをコピー
コードは次のとおりです:
<スクリプト言語="javascript "> var
var str="中華人民共和国、中華人民共和国";
var newsstr=str.replace(/(人)/g,"
$1 ");
document.write(newstr);
上記のプログラムには対話性が欠けています。探している文字を個別に入力できるようにプログラムを改良しましょう。
Js コード
<スクリプト言語="javascript "> var s=prompt("探している文字を入力してください","人物");
var reg=new RegExp("(" s ")","g" ); var str="中華人民共和国、中華人民共和国"
var newstr=str.replace(reg,"$1"); .write(newstr );
同様に、$2 は 2 番目のサブマッチを意味します。最初のサブマッチと 2 番目のサブマッチは同じです。括弧は 2 番目のサブマッチです。
見つかった文字に対して操作を実行する必要がある場合、どうすればよいでしょうか? ?実装する前に、まず特定の関数のパラメーターを取得する方法について説明します。 。関数 Function 内には引数コレクションがあり、このコレクションには現在の関数のすべてのパラメーターが格納されます。理解するには、次のコードを参照してください。
Js コード
コードをコピー
コードは次のとおりです:
test("aa"," bb"," cc");
alert("
alert("
alert("
//ループしてすべてのパラメータを読み取ります
上記のプログラムを理解した後、次の興味深いプログラムを見てみましょう
Js コード
コードをコピー
コードは次のとおりです:
<スクリプト言語="javascript ">
var reg=new RegExp("\d","g");
var str="abd1afa4sdf"; str.replace(reg,function(){alert() argument.length );}); 関数内に 3 つのパラメーターがあることに驚きました。 2回実行された場合はどうでしょうか? ?これは簡単に考えられます。作成した正規表現は 1 つの数値に一致し、検出された文字列にはたまたま 2 つの数値が含まれているため、匿名関数が 2 回実行されるからです。 。無名関数内の 3 つのパラメータは何ですか? ?この問題を明確にするために、次のコードを見てみましょう。
Js コード
コードをコピー
コードは次のとおりです:
<スクリプト言語="javascript ">
function test(){
for(var i=0;i
alert("「番目」の値 (i 1) "パラメータ:" 引数 [i]); } } } var reg=new RegExp("\d","g"); > str.replace(reg ,test); for(var i=0;ialert("パラメータの値:" argument[ i]);}
観察の結果、最初のパラメータは一致した文字を表し、2 番目のパラメータは一致時の文字の最小インデックス位置 (RegExp.index) を表し、3 番目のパラメータは一致した文字列 (RegExp.input ) を表していることがわかりました。実際、サブマッチの数が増加するにつれて、これらのパラメーターの数も増加します。これらの問題を明確にした後、別の書き方を使用できます
Js コード
<スクリプト言語="javascript ">
function test($1){
return " $1 "" var s=prompt("探している文字を入力してください ","人");
var reg=new RegExp("(" s ")","g");
var str="中華人民共和国、人民共和国中国";
var newsstr=str.replace(reg,test);
document.write(newstr);
return "" $1 ""
人");
上記のプログラムを読むと、一致した文字を使って何でもできることが分かりました。簡単な応用例
Js コード
<スクリプト言語="javascript ">
var str="彼は 22 歳、彼女は 20 歳、彼の父親は 45 歳、彼女の父親は 44 歳、合計 4 人です"
function test($1){
var gyear=(new Date()).getyear()-parseInt($1) 1;
return $1 "(" gyear "誕生年)"
} var reg=new RegExp(" ( \d )years","g");
var newstr=str.replace(reg,test);
alert(str);
alert(newstr);