JSのreplace方法と正規表現との応用解説



<script language="javascript"> 
var stringObj=" , "; 

// “ ” “ ” 
//  
// stringObj  
var newstr=stringObj.replace(" "," ");  
alert(newstr); 
</script> 
   私より頭がいいあなたは上の例を見てから、第二の誤字の「終世」が「中国」に置き換えられていないことが分かります。私たちは二回のreplace方法を実行して、第二の誤字の「終世」も交替します。プログラムは改善された後、次のようになります。 [Ctrl+A全選択注:引入外部Js需再刷新一下页面才能执行]   NのN乗の誤字があったら、NのN乗のreplace方法を実行して誤字を置換しますか?はい、恐れなくてもいいです。正規表現があったら、誤字を使わずにreplaceを実行します。プログラムを改善した後のコードは以下の通りです。正則RegExp対象var strigObjを作成します。var newstr=strigObj.replace(reg,「中国」)alert(newstr)[Ctrl+A全選注:外部Jsを導入するには、もう一度ページを更新してから実行できます。]上で述べたのはreplaceの方法の最も簡単な応用で、皆さんは分かりますか?ちょっと複雑なアプリケーションについて説明します。   いくつかのサイトで記事を検索すると、検索のキーワードが色を変えて表示されますか?これはどうやって実現されますか?実際には正規表現で実現できますが、具体的にはどうなりますか?簡単な原理は以下のコードを見てください。var newstr=str.replace(/人)/g、「$1」);document.write(newstr);script>[Ctrl+A全選注:外部Jsを導入するには、もう一度ページを更新してから実行できます。]上のプログラムはインタラクティブ性に欠けています。プログラムを改善して、検索する文字を自主的に入力できるようにします。var reg=new RegExp("+"s+"),"g")var str=「中華人民共和国、中華人民共和国」var newstr=str.replace;document.write(newstr);script>[Ctrl+A全選注:外部Jsを導入するには、もう一度ページを更新してから実行できます。]皆が$1という特殊文字について意味がよく分からないかもしれませんが、$1は左式の中で括弧内の文字、つまり一番目のサブマッチです。子マッチングとは何ですか?分かりやすい点で言えば、左の括弧は第一文字が一致し、第二括弧は第二子が一致します。   検索した文字を演算する場合、どうなりますか?実現する前に、どのように関数のパラメータを取得するかについて説明します。関数Functionの内部には、現在の関数のすべてのパラメータが格納されているargmentsのセットがあります。argmentsを通じて関数のすべてのパラメータを取得できます。ご理解のために、下記のコード<script lagge=“javascript”>function test(){パラメータ個数:+argments.length];alert(「各パラメータの値:」+argments[0])alert(「2番目のパラメータの値」+argments[1])//for循環ですべてのパラメータ}test(「aa」「bb」「cc」)を読み取ることができます。script>[Ctrl+A全選注:外部Jsを導入するには、もう一度ページを更新してから実行できます。]上のプログラムが分かりましたら、次の面白いプログラムを見に来ます。 var reg=new RegExp(\\d","g")var str="abd 1 a fa 4 sdf"str.replace(reg,function(){alert(argments.length)}script>[Ctrl+A全選択注:引入外部Js需再刷新一下页面才能执行]    私たちは驚くべき発見をしました。匿名関数は二回も実行されました。また関数には三つのパラメータがあります。なぜ二回も実行されますか?これは容易に考えられます。私たちが書いた正規表現は単一の数字にマッチしていますが、検出された文字列はちょうど2つの数字もありますので、匿名関数は2回実行されます。匿名関数の内部にある3つのパラメータはいったいどんな内容ですか?この問題を明らかにするために、次のコードを見ます。 [Ctrl+A全選択注:引入外部Js需再刷新一下页面才能执行]    観察した結果、最初のパラメータは一致する文字を表し、第二のパラメータはマッチング時の文字最小インデックス位置(RegExp.index)を表し、第三のパラメータは一致する文字列(RegExp.input)を表していることが分かりました。これらのパラメータの個数は、サブマッチングが多くなるにつれて多くなります。これらの問題を明らかにした後、私たちは別の書き方でfunction test($1){return''"+$1+""">var s=prompt(検索している文字を入力してください。var reg=new RegExp("+"s+"),"g")var str=「中華人民共和国、中華人民共和国」var newstr=str.replace(reg,test)document.write(newstr);script>[Ctrl+A全選注:引入外部Js需再刷新一下页面才能执行]上のプログラムを見て、マッチした文字を好き勝手にすることができました。以下では、アプリケーションの例を簡単に挙げます。var str="彼は22歳で、彼女の父は今年45歳で、彼女の父は今年44歳です。全部で4人です。return$1+“(”+gyear+“年出生)”;var reg=new RegExp(\\d+)歳、g);var newstr=str.replace(reg,test)alert(str)alert(newstr)[Ctrl+A全選択注:外部Jsを導入するには、もう一度ページを更新してから実行できます。]