摘要:方法是涉及到正則表達式中較為復雜的一個方法,嚴格上說應該是對象的方法。字符串中要替換的子串或正則第二個參數必需,一個字符串值,規定了替換文本或生成替換文本的函數。如果具有全局標志,那么方法將替換所有匹配的子串。
replace方法是javascript涉及到正則表達式中較為復雜的一個方法,嚴格上說應該是string對象的方法。只不過牽扯到正則的時候比較多一些。需要我們靈活的使用。
語法: stringObj.replace(regexp/substr,replacement);
第一個參數:必需。字符串中要替換的子串或正則RexExp;
第二個參數:必需,一個字符串值,規定了替換文本或生成替換文本的函數。
返回值:注意它的返回值是一個新的字符串,并沒有更改原有字符串,是用 replacement 替換了 regexp 的第一次匹配或所有匹配之后得到的。
所以根據它的參數的不同分為很多種情況,以下一一對各種情況加以分析:
var str1 = "這是一段原始文本,需要替換的內容"這要替換"!"; var newStr = str1.replace("這要替換","need replace"); console.log( newStr ); //輸出: 這是一段原始文本,需要替換的內容"need replace"!
上面的例子中第二個參數字符串’need replace’,替換掉了第一個參數字符串’這要替換’。這是最簡單的一種形式。
NO.2 第一個參數是正則,第二個參數是字符串var str2 = "這是一段原始文本,需要替換的內容"ac這要替換bb"!"; var newStr = str2.replace( /([a-z])+/g,"qqq" ); console.log( newStr ); //輸出: 這是一段原始文本,需要替換的內容"qqq這要替換qqq"!
上面的例子字符串’qqq’,替換了正則匹配的內容。如果 regexp 具有全局標志 g,那么 replace() 方法將替換所有匹配的子串。否則,它只替換第一個匹配子串。
NO.3 第一個參數是正則,第二個參數是帶$符的字符串var str3 = "這是一段原始文本,"3c這要替換4d"!"; var newStr = str3.replace( /([0-9])([a-z])/g,"$1" ); console.log( newStr ); //輸出: 這是一段原始文本,"3這要替換4"!";
上面的例子,$1表示regexp中的第一個子表示即([0-9])匹配單個數字,同理若是$2則表示第二個子表示即([a-z]);所以,’3c’這個匹配到的整體被第一個子表示說表示的’3’替換,’4d’被第一個子表示匹配的數字’4’所替換。其他幾個同理可得:
(/([0-9])([a-z])/g,”$2″)—>////輸出: 這是一段原始文本,”c這要替換d”!"; (3c和4d被相應的第二個子表示匹配出來的c和d替換)
(/([0-9])([a-z])/g,”$"”)—>////輸出: 這是一段原始文本,”這要替換d”!這要替換”!”!"; (3c被3c右側文本替換,4d右側是”!替換,所以出現倆次)
var str4 = "這是一段原始文本,需要替換的內容"aa這要bbb替換ccccc"!"; var newStr = str4.replace( /[a-z]+/g,function ($0){ var str = ""; for (var i = 0; i < $0.length; i++) { str += "*"; }; return str; } ); console.log( newStr ); //這是一段原始文本,需要替換的內容"**這要***替換*****"!
上面的例子函數的第一個參數為匹配的regexp的整體,根據長度函數返回值為相應替換的文本;
NO.5 第一個參數是正則且有子表達式,第二個參數函數且帶有多個參數var str5 = "這是一段原始文本,需要替換的內容"3c這要替換4d"!"; var newStr = str5.replace( /([0-9])([a-z])/g,function (arg1,arg2,arg3,arg4,arg5){ console.log( arg1 ); console.log( arg2 ); console.log( arg3 ); console.log( arg4 ); console.log( arg5 ); } ); //輸出: 3c 3 c 17 這是一段原始文本,需要替換的內容"3c這要替換4d"! 4d 4 d 23 這是一段原始文本,需要替換的內容"3c這要替換4d"!
上面的例子第一個參數arg1表示匹配的整體,arg2表示第一個子表達式,arg3表示第二個子表達式,接下來的參數arg4是一個整數,聲明了表示子匹配在 stringObject 中出現的位置。最后一個參數是 stringObject 本身。
以上就是replace方法各種可能的情況。確實是一個需要深入理解的方法,不過確實也很強大的一個方法,值得深入研究!
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/82145.html
摘要:正則的三種方法編譯正則表達式。返回找到的值,并確定其位置。規定匹配的類型。用于全局匹配,用于區分大小寫,用于全局區分大小寫的匹配。非貪婪匹配就是匹配到結果就好,就少的匹配字符。對象是否具有標志。正則表達式的源文本。 對正則的深入學習 學習正則我們不能光看看幾個修飾符就可以了,因為正則還有許多深入的知識,下面我就來為大家扒一扒。。。showImg(https://segmentfault...
摘要:屬性里的字符串類似于數組,都是一個一個字符拼湊在一起組成的,因此可以用屬性取得字符串的長度字符串常用的一些方法返回字符串的第個字符,如果不在之間,則返回一個空字符串。如果匹配成功,則返回正則表達式在字符串中首次匹配項的索引否則,返回。 字符串 字符串就是一個或多個排列在一起的字符,放在單引號或雙引號之中。 abc abc length屬性js里的字符串類似于數組,都是一個一個字...
摘要:如果你還沒正式開始正則表達式,請快速瀏覽跳過本章節。就是一個等同于但更簡略的正則表達式。如果想查找全部,就要加標識全局匹配規則正則表達式搜索字符串指定的值,從而去匹配字符串。正則表達式都是用來操作字符串的。 正則表達式 Create by jsliang on 2018-11-14 10:41:20 Recently revised in 2018-11-19 08:46:37 ...
摘要:程序員的正則表達式,醫生的處方和道士的鬼畫符,都是利器。其實,正則表達式是一門語言,有自己獨特的語法,還擁有自己的解釋器。但是,如果正則表達式是動態的,是根據變量來定義的,那么,只能使用第二種構造函數的方式。 前言 作為一個程序員,要出去裝逼,手中必備的技能就是正則表達式。程序員的正則表達式,醫生的處方和道士的鬼畫符,都是利器。 在js中,很多的場景需要去使用到它(畢竟,js剛剛誕生的...
摘要:正則基礎詳解開頭,結尾匹配次或多次匹配次匹配次或次當跟在后面時,匹配模式是非貪婪的匹配確定是次,非負數匹配除了換行符以外的任何字符包括點本身小括號中的內容只匹配不捕獲正向預查負向預查匹配或者匹配中任何一個匹配未包含的任意字符匹配指定范圍 正則基礎詳解 /^開頭,結尾$/ * 匹配0次或多次 + 匹配1-n次 ?匹配0次或1次; 當?跟在 * + {n} {n,m} {n,} 后面時...
閱讀 3947·2021-10-19 13:23
閱讀 2326·2021-09-09 11:37
閱讀 2507·2019-08-29 15:20
閱讀 3407·2019-08-29 11:08
閱讀 1661·2019-08-26 18:27
閱讀 1764·2019-08-23 12:20
閱讀 3028·2019-08-23 11:54
閱讀 2544·2019-08-22 15:19