jsが、あなたが考えるよりはるかに強力に二番目のパラメータメソッドを置き換えます

JS replace()メソッドは、おそらく誰もが精通しています。

定義と使用法:

他の文字をいくつかの文字を置換する()メソッドを置き換える、あるいはサブ文字列を使用して陽性発現と一致。

stringObject.replace(正規表現/ SUBSTR、交換)

正規表現/ SUBSTR:必須。または所定のRegExpオブジェクトモデルを交換するサブストリング。あなたは値が文字列で訪れる場合は、直接モデルは最初のRegExpオブジェクトに変換されずに検索されるように、それはテキストの量があることに注意してください。

交換:必須。文字列値。代替的に、所定のテキスト又は関数が置換テキストを生成します

1、一般的な文字列

交換が文字列である場合には、通常の文字列ならば、それは非常に簡単です、遠くの文字列に文字を一致させることです。

するvar strが= 'こんにちは、世界
STR = str.replace(/世界/ 'javascriptの' ); 
console.log(STR)// - >こんにちはジャバスクリプト。

 

2、特別にマークされました$

定期的に使用して交換するために、特殊なトークン$を合意

文字 テキストの置換
$ 1、$ 2、... $ 99 最初に99の部分式での正規表現は、テキストと一致します。
$& そして、正規表現のマッチ部分文字列
$ ` テキスト一致するサブストリングの左に位置
$」 テキストマッチングサブストリングの右側にあります
$$ 「$」を挿入

1)$ I(I:1から99まで):左から右に、マッチしたテキストの定期的な部分式(グループ)を表しています。

VaRの名=「ペッパピッグ」; 
名前 = name.replace(/(\ + w)の\はよ* \ sの*(\ + W)/、 '$ 2 $ 1' ); 
console.log(名); // - >豚Peppa
するvar strの= ' "A"、 "BC"' ; 
STR = str.replace(/ "([^"] *) "/ gで、 " '$ 1'" ); 
はconsole.log(STR); // - > ''、 'BC'

2)$ `タブ文字以上(キー):テキストの左側に一致するテキスト文字列を示します

するvar strが= 'こんにちは、世界
STR = str.replace(/世界/ gで、 '$ `' ); 
console.log(STR)。// - >ハローハロー

3)$「:テキスト文字列が右にマッチし表し

するvar strが= 'こんにちは、世界
STR = str.replace(/ハロー/ gで、 "$ '" ); 
console.log(STR)。// - >世界の世界

4)$&:正規表現マッチの全文を示します

するvar strが= 'こんにちは、世界
STR = str.replace(/ハローワールド/ gで、 "$&、楽しいです" ); 
console.log(STR)。// - > Hello Worldの、楽しい

// 与$ '组合使用の
VAR = "javascriptの"のmyString ; 
myString = myString.replace(/ Javaの/、 "$&$」です" ); 
console.log(のmyString)。// - > Javascriptをスクリプトです

5)$$:$に挿入されています

するvar strの= '¥20000.00' ; 
STR = str.replace(/¥/、 "$$" ); 
console.log(STR)。// - > $ 20000.00

 

図3は、第2のパラメータは関数であります

するvar strが= 'abcdbc' ; 
STR = str.replace(/(B)(C)/ gで、関数(){ 
    にconsole.log(引数); 
    戻り '&&' ; 
}); 
console.log(STR)。

// 输出如下:
/ * 
[ "BC"、 "B"、 "C"、1、 "abcdbc"] 
0: "BC" 
1 "B" 
2: "C" 
3:1 
4: "abcdbc" 
。 .. 
[ "BC"、 "B"、 "C"、1、 "abcdbc"] 
0: "BC" 
1 "B" 
2: "C" 
3:4 
4: "abcdbc" 
... 
&& D &&

関数の戻り値は一致する要素を置き換えるために使用する文字列を示し、

関数のパラメータは、言いました:

- param 1: 匹配到的字符串
- param 2: 匹配的子字符串
- param 3: 匹配的子字符串
- param 4: 匹配到的字符串在字符串中的位置
- param 5: 原始字符串

注:完全な複数に一致する文字列場合、各機能(実行する部分文字列の数(n)を、第2のパラメータは、n番目のサブストリングは、n + 1のために、示されているに開始しますストリング全体インデックス位置は、最後のパラメータは、全体の文字列であるサブストリング

差関数の使用および機能なしが使用されます。
//不使用函数
列str = 'の<div> "&Hello World"の</ DIV>' ; STR = str.replace(/&/ gで、 '&#038' )。 STR = str.replace(/ </ gで、 '&LT' )。 STR = str.replace(/> / gで、 '&GT' )。 STR = str.replace(/ "/ G '&QUOT' ); STR = str.replace(/ '/ G' &#39' ); にconsole.log(STR); // 出力:&lt; div&gt;で&QUOT ;ハロー&#038;世界&QUOT;&LT; / DIV&GT。
 
//使用函数
列str = 'の<div> "&Hello World"の</ DIV>' ; STR = str.replace(/ [<> \ "\ '\&'] / gで、関数(a)は{ スイッチ(A){ ケース '<' リターン '&LT;' ; 場合 '>' リターン「&GT ;」; 場合 '\ "' リターン '&QUOT;' ; 場合 '\' ' リターン '&#39;' ; 場合 '\&' リターン「&#038;」; } })。 console.log(STR)。 // 出力:&lt; div&gt;で&QUOT;ハロー&#038; 世界&QUOT;&LT; / DIV&GT。
 

Wordでは、大文字

するvar strが=「あなたの最初のproprityをヒースてください」; 
STR = str.replace(/ \ B \ + \ B / G、W 関数(ワード){
     戻りワード[0] .toUpperCase()+ word.slice(1 ); 
}); 
console.log(STR)。// - >確認してくださいヒースあなたは、まずProprity

若しくは

するvar strが=「あなたの最初のproprityをヒースてください」; 
STR = str.replace(/(^ | \ S)([AZ])/ gで、関数(ワード、P1、P2){
     戻り P1 + p2.toUpperCase(); 
}); 
console.log(STR)。// - >確認してくださいヒースあなたは、まずProprity

 

:上記の例から転送H ttps://www.jianshu.com/p/724e85c0941​​f 

使用することは、テンプレートクラスの置き換えを書くために置き換えます
VAR formateStr = 関数(パラメータ、データ){
       戻り param.replace(/ \ {#(\ W +)#\} / gで、関数(一致、キー、AA、DD){ 
        にconsole.log(一致、キー、AA、 DD); 
        戻り typeof演算?不定=== [キー]データを' :データ[キー]; 
      }); 
    }。
    // 模板方法
    VARナビゲーション= 関数(データ){
       VARの _this = この; 
      _this.item = '<LI> <a href="{#hrefUrl#}" title="{#title#}" {#sign#}> {#コンテンツ#} </a>に</ LI>' ; 
      _this.html = '<UL>' ;
      VAR I = 0、L = data.length。私はリットルを<; 私は++ ){ 
        _this.html + = formateStr(_this.item、データ[I])。
      } 
      _this.html + = '</ UL>' 返す_this.html; 
    }。
    // 扩展方法
    VAR情报infonav = 関数(データ){
       VARの _this = この; 
      _this.info = '<I> {#1 NUM位} </ I>' VAR I = data.length - 1; I> = 0; i-- ){ 
        DATA [i]を.content + = formateStr(_this.info、データ[I])。
      }。
      リターンNav.call(これは、Data); 
    }; 

    VAR objNav =のdocument.getElementById( 'NAV' ); 
    objNav.innerHTML = 情报infonav([ 
      { 
        hrefUrl: 'http://www.baidu.com' 
        タイトル:「これは百度、 ' 
        コンテンツ: '百度、 ' 
        NUM: ' 10 ' 
        サイン: ' =サイン'」1" 
      }、
      { 
        hrefUrl: ' http://www.zhihu.com ' 
        タイトル: 'これは、ほとんど知られています「見て
        コンテンツを:」ほとんど見て知っています"
        中:'10' 
        記号: '記号は= "2"' 
      } 
    ])
 

 

おすすめ

転載: www.cnblogs.com/garfieldzhong/p/11654630.html