摘要:零寬斷言一般的正則表達式匹配,都是有寬度的,如。零寬度正先行斷言僅當子表達式在此位置的右側(cè)匹配時才繼續(xù)匹配。文檔對象方法方法用于檢索字符串中的正則表達式的匹配,返回一個數(shù)組,其中存放匹配的結(jié)果。
正則表達式
MDN文檔
名詞解析1. 斷言
斷言,就是指明某個字符串前邊或者后邊,將會出現(xiàn)滿足某種規(guī)律的字符串。
零寬斷言:一般的正則表達式匹配,都是有 寬度 的,如:w+。 會將 "。" 一同匹配到。如果像 "。" 這樣的內(nèi)容只是一種判斷條件,即不想被正則匹配到,就要使用到 零寬斷言了。
(?=X)零寬度正先行斷言:僅當子表達式 X 在 此位置的右側(cè)匹配時才繼續(xù)匹配。例如,w+(?=d) 與后跟數(shù)字的單詞匹配,而不與該數(shù)字匹配。此構(gòu)造不會回溯。 目前JS只支持先行斷言,后發(fā)斷言還不支持。不過目前chrome支持了后發(fā)斷言。 2. 分組 分組的類型(四種): 捕獲型 - () 非捕獲型 - (?:) 正向前瞻型 - (?=) 反向前瞻型 - (?!) 其中只有捕獲型分組會暫存匹配到的串。 一個分組中可以寫多個表達式:(表達式1|表達式2|表達式3), 表示匹配其中任意一個表達式。 3. 捕獲與引用 1) 嵌套分組的捕獲: 規(guī)則是以左括號出現(xiàn)的順序進行捕獲
(?!X)零寬度負先行斷言:僅當子表達式 X 不在 此位置的右側(cè)匹配時才繼續(xù)匹配。例如,例如,w+(?!d) 與后不跟數(shù)字的單詞匹配,而不與該數(shù)字匹配 。
(?<=X)零寬度正后發(fā)斷言:僅當子表達式 X 在 此位置的左側(cè)匹配時才繼續(xù)匹配。例如,(?<=19)99 與跟在 19 后面的 99 的實例匹配。此構(gòu)造不會回溯。
(?:僅當子表達式 X 不在此位置的左側(cè)匹配時才繼續(xù)匹配。例如,(?
分組可以通過將某些表達式組合成整體,這樣可以簡化表達式的書寫。例如將/testtesttest/寫為/(test){3}/
var reg = /((kid) is (a (doubi)))/
var str = "kid is a doubi"
reg.test( str ) // true
console.log(RegExp.$1) // kid is a doubi
console.log(RegExp.$2) // kid
console.log(RegExp.$3) // a doubi
console.log(RegExp.$4) // doubi
通過 $1 可以引用捕獲的字符串
2) replace中捕獲的使用:
3) 反向引用
正則表達式里也能進行引用,這稱為反向引用:
var reg = /(w{3}) is 1/reg.test("kid is kid") // true
reg.test("dik is dik") // true
reg.test("kid is dik") // false
reg.test("dik is kid") // false
1引用了第一個被分組所捕獲的串,換言之,表達式是動態(tài)決定的。
注意,如果編號越界了,則會被當成普通的表達式:
var reg = /(w{3}) is 6/;reg.test( "kid is kid" ); // false
reg.test( "kid is 6" ); // true
3. 字符集合
通常字符集合有由[]方括號括起來。
exec、test、match、replace
segmentfault文章
replace默認只替換第一個匹配到的字符串。
mdn文檔RegExp對象
JavaScript exec() 方法
RegExpObject.exec(string)
exec() 方法用于檢索字符串中的正則表達式的匹配,返回一個數(shù)組,其中存放匹配的結(jié)果。如果未找到匹配,則返回值為 null;
情況 1)RegExp為非全局正則表達式;
情況 2)RegExp為全局正則表達式,exec()可以像迭代器那樣,多次調(diào)用,獲得匹配值;
JavaScript test() 方法
RegExpObject.test(string)
如果字符串 string 中含有與 RegExpObject 匹配的文本,則返回 true,否則返回 false
String.prototype.replace()方法
W3 replace方法
MDN replace方法
更多博客:https://github.com/Lmagic16/blog
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/98167.html
摘要:正則表達式一直是里比較難以掌握的點。在中創(chuàng)建正則的兩種方式使用字面量這就是正則表達式的字面量語法,表示正則表達式的模式,為正則表達式的標志。字面量形式的正則表達式一般使用較多,也推薦大家盡可能使用這種形式,簡潔易讀,符合正常的使用習慣。 正則表達式一直是js里比較難以掌握的點。 看不懂,學不會,記不住。 每次需要用到正則的時候,都需要再去查找資料。 今天花時間把正則的知識點總結(jié)下,希望...
摘要:選擇分組和引用正則表達式的語法還包括指定選擇項子表達式分組和引用前一子表達式的特殊字符。帶圓括號的表達式的另一個用途是允許在同一正則表達式的后部引用前面的子表達式。 正則表達式(regular expression)是一個描述字符模式的對象。JavaScript的 RegExp類 表示正則表達式,String和RegExp都定義了方法,后者使用正則表達式進 行強大的模式匹配和文本檢索與...
閱讀 850·2023-04-25 16:55
閱讀 2913·2021-10-11 10:59
閱讀 2156·2021-09-09 11:38
閱讀 1887·2021-09-03 10:40
閱讀 1545·2019-08-30 15:52
閱讀 1215·2019-08-30 15:52
閱讀 1037·2019-08-29 15:33
閱讀 3555·2019-08-29 11:26