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