摘要:字符串方法還是比較強(qiáng)大的,做個(gè)筆記總結(jié)。美元符號連字符與正則表達(dá)式相匹配的子字符串。美元符號單引號位于匹配子字符串右側(cè)的文本。否則,第至個(gè)參數(shù)對應(yīng)為捕獲組匹配項(xiàng),倒數(shù)的兩個(gè)參數(shù)為匹配下標(biāo),原串。函數(shù)的匹配返回值,作為每次的匹配替換值。
javascript字符串方法replace還是比較強(qiáng)大的,做個(gè)筆記總結(jié)。
第一個(gè)參數(shù)replace的第一個(gè)參數(shù)為字符串或者正則表達(dá)式。第二個(gè)參數(shù)為替換符,或者一個(gè)回調(diào)函數(shù)。
javascript"aadbbbd".replace("a","1") //"1adbbbd" "aadbbbd".replace(/a/,"1") //"1adbbbd"第二個(gè)參數(shù)
1.第二個(gè)參數(shù)為特殊符號
$1、$2、…、$99:與正則表達(dá)式中的第1~99個(gè)子表達(dá)式相匹配的文本。其實(shí)也可以在1-9之間,加上0前綴。
該符號針對的是分組,所以,沒有分組的話,會被當(dāng)做$n字符來做替換。
$&:(美元符號+連字符):與正則表達(dá)式相匹配的子字符串。
$`:(美元符號+切換技能鍵):位于匹配子字符串左側(cè)的文本。
$":(美元符號+單引號):位于匹配子字符串右側(cè)的文本。
$$:表示$符號。
代碼示例:
javascript"中國人民".replace(/(中國)/g,"($1)") //"(中國)人民" "cdab".replace(/(ab)/g,"$`") //"cdcd" "abcd".replace(/(ab)/g,"$"") //"cdcd" "abcdabcd".replace(/(ab)/g,"[$&]") //"[ab]cd[ab]cd" "$1$2wa,test".replace(/[a-zA-z]/g,"$$"); //"$1$2$$,$$$$"
如果有10個(gè)分組,但是我想在匹配第一個(gè)分組的后面加個(gè)0,怎么辦?
也就是說,怎么讓js去做10和1的區(qū)分?
用事實(shí)說話:
javascript"abcdefghijkkkk".replace(/(a)/g,"$10") //"a0bcdefghijkkkk" "abcdabcd".replace(/(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)/g,"$10") //"jkkkk"
這個(gè)有點(diǎn)為難了,但是卻難不倒函數(shù)??!
2.第二個(gè)參數(shù)為函數(shù)
如果第二個(gè)參數(shù)傳入函數(shù),那么,正則表達(dá)式?jīng)]有定義捕獲組的情況下,默認(rèn)為三個(gè)參數(shù),分別為:matched(匹配子串),匹配下標(biāo),原串(originalText)。否則,第2至n個(gè)參數(shù)對應(yīng)為捕獲組匹配項(xiàng),倒數(shù)的兩個(gè)參數(shù)為:匹配下標(biāo),原串(originalText)。
函數(shù)的匹配返回值,作為每次的匹配替換值。
javascript"123".replace(/d/g,function(m1,m2,m3){ return m3+"#" }) //"123#123#123#" "abcdeffffdabc12323abc".replace(/[abc]/g,function(matched,index,originalText){ return matched+"~" }) //"a~b~c~deffffda~b~c~12323a~b~c~" "abcdeffffdabc12323abc".replace(/[abc]/g,function(matched,index,originalText){ return "~" }) //"~~~deffffd~~~12323~~~" "abcdeabc".replace(/[ab]/g,function(matched,index,originalText){ return "["+index+"]"; }) //"[0][1]cde[5][6]c"
接下來,我們來做個(gè)題目,要求對一個(gè)串的重復(fù)部分進(jìn)行替換處理,比如:abcabcaabbbdd,該串中abc緊接著abc,a后緊接著a,無論重復(fù)多少次,我們都用#替換掉。
javascript//因?yàn)橛幸粋€(gè)捕獲組,所以,需要再傳遞1參數(shù) $1 "abcaabbccccffffdabcabcef".replace(/(w+)1+/g,function(matched,$1,index,originalText){ return "#"; }) //"abc#####ef"
如果只是保留非重復(fù)部分,也就是緊連接的aaa,只需要保留a即可。那么我們可以這么改:
javascript"abcaabbccccffffdabcabcef".replace(/(w+)1+/g,function(matched,$1,index,originalText){ return $1; }) //"abcabccdabcef"
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/78177.html
摘要:返回值返回值根據(jù)傳入的參數(shù)類型和規(guī)則的不同,返回的內(nèi)容不同,但總體來說,它是返回一個(gè)對象,而不是索引,如果沒匹配到任何符合條件的字符串,則返回。 本文發(fā)布在我的博客一道小小的題目引發(fā)對javascript支持正則表達(dá)式相關(guān)方法的探討許可協(xié)議: 署名-非商業(yè)性使用-禁止演繹 4.0 國際 轉(zhuǎn)載請保留原文鏈接及作者。 以前對于正則是非常懼怕的,因?yàn)榭床欢蛯W(xué)不會。但最近項(xiàng)目中頻繁的...
摘要:對應(yīng)于上述的,等。匹配到的子字符串在原字符串中的偏移量。插入當(dāng)前匹配的子串右邊的內(nèi)容。 javascript這門語言一直就像一位帶著面紗的美女,總是看不清,摸不透,一直專注服務(wù)器端,也從來沒有特別重視過,直到最近幾年,javascript越來越重要,越來越通用。最近和前端走的比較近,借此機(jī)會,好好鞏固一下相關(guān)知識點(diǎn)。 1.初識replace 在js中有兩個(gè)replace函數(shù) 一個(gè)是lo...
摘要:元字符是在正則表達(dá)式中有特殊含義的非字母字符。五前瞻后顧后瞻正則表達(dá)式從文本頭部向尾部開始解析,文本尾部方向,稱為前。前瞻就是在正則表達(dá)式匹配到規(guī)則的時(shí)候,向前檢查是否符合斷言,后顧后瞻方向相反。替換與正則表達(dá)式匹配的子串。 Regular Expression 使用單個(gè)字符串來描述、匹配一系列符合某個(gè)句法規(guī)則的字符串。按某種規(guī)則去匹配符合條件的字符串。不同編程語言的正則表達(dá)式略有不同...
摘要:來自本文原作者發(fā)表于由于瀏覽器及的快速迭代發(fā)展,以下部分代碼功能可能會失效過時(shí)或者不夠優(yōu)雅還請看官自行斟辨。重新使用排版,且自動生成了目錄方便瀏覽。 來自:http://www.cnblogs.com/wxydigua/p/3314274.html 本文原作者發(fā)表于:2013-09-11, 由于瀏覽器及ECMAScript的快速迭代發(fā)展,以下部分代碼功能可能會失效、過時(shí)或者不夠優(yōu)雅, ...
摘要:語法參數(shù)必填項(xiàng),字符串或正則表達(dá)式,該參數(shù)指定的地方分割可選該參數(shù)指定返回的數(shù)組的最大長度,如果設(shè)置了該參數(shù),返回的子字符串不會多于這個(gè)參數(shù)指定的數(shù)組。該數(shù)組通過在指定的邊界處將字符串分割成子字符串。把正則表達(dá)式拆分成小表達(dá)式。 正則表達(dá)式是什么 RegExp 對象表示正則表達(dá)式,它是對字符串執(zhí)行模式匹配的強(qiáng)大工具。 為什么使用正則表達(dá)式 測試字符串內(nèi)的模式。例如,可以測試輸入字符串...
閱讀 1334·2021-09-01 10:30
閱讀 2262·2021-07-23 10:38
閱讀 968·2019-08-29 15:06
閱讀 3213·2019-08-29 13:53
閱讀 3325·2019-08-26 11:54
閱讀 1899·2019-08-26 11:38
閱讀 2436·2019-08-26 10:29
閱讀 3189·2019-08-23 18:15