正則捕獲的細節及replace分析

2022-08-09 14:15:22 字數 1901 閱讀 7210

1.var reg=/./與var reg=/\./的區別?

前者代表任意乙個字元,

後者代表這個字串中得有乙個點

2.?的使用

如果單獨的乙個字元後面帶?

代表1個或0個這個字元的出現;  列如: /\d?/

如果量詞+後面帶?  取消正則的貪婪性  在捕獲的階段

3.捕獲:

1.普通捕獲  正則的方法exec()  字串的方法match()

普通捕獲有懶惰性:

給正則新增乙個修飾符g,可以解決;

match是將所有捕獲的內容放在乙個陣列中,並返回,match就是exec()對函式的簡單封裝

2.分組捕獲:還是正則的方法exec() 字串的方法match()

只不過正則結構發生了變化加()     (分兩種捕獲,全域性和非全域性)

非全域性  var reg=/(a)(b)/  exec()和match()在非全域性下分組捕獲相同的,分組捕獲在捕獲的過程中,即捕獲大正則的內容,也捕獲分組中的內容,並返回

全域性   var reg=/(a)(b)/g  exec()和match()在全域性下的分組捕獲是不一樣的,exec()不變,但是match()只捕獲到大正則的內容:

3.分組的優勢:

1.可以提公升優先順序

2.可以捕獲引用

捕獲引用:

\1  代表分組1裡面的內容:

\2  帶標分組2裡面的內容:

分組必須在引用前,如果分組引用在分組前,就是普通的表示式// ???  

案例:/((a)(b))/  第一組:先捕獲大()  第二組:在捕獲小()  第三組:在捕獲小()  總結:分組捕獲:先捕獲大(),在捕獲小()

分組的結果存在正則(regexp)的$number屬性下:

\1和regexp.$1二者,都是分組引用;

\1只能使用,在正規表示式裡面,regexp.$1可以外面使用,都是在捕獲完成的條件下:

4.在捕獲的過程中,怎樣取消捕獲分組內:

在分組的前面加上?:就ok了

?:和?=的區別:

?:  取消捕獲分組的內容

?=  案例    var reg=/a(?=b)/  捕獲字元a後面緊跟著b,只返回a

replace細說:

replace是字串的乙個方法,他又兩個引數,用後者將前者替換掉,並返回新的字串:

不會改變原來的字串;

1.如果第乙個引數是字串,只改變一次:

2.如果第乙個引數是正則:捕獲一次,改變一次:

字串案例:var st="hello123hello456";

var ss=st.replace("hello","world");

console.log(ss)  返回的結果為:world123hello456

正則的案例:var st="hello123hello456";

var reg=/hello/g

var ss=st.replace(reg,"world")

console.log(ss)  結果為: world123world456

3.如果第二個引數是匿名函式,每次捕獲1次,這個匿名函式就會執行1次:

案例:var st="hello123hello456";

var reg=/hello/g;

var ss=st.replace(reg,function(){

return "world"           (這個匿名函式有三個引數,0:"world"要替換的,1:從哪開始,2:"hello123hello456"  原字串)

console.log(ss)    返回的結果為:world123world456

如果以後想知道物件有幾個引數就是用:console.log(arguments)

return是什麼就會返回什麼,沒有return就是undefined;

簡單的正則式及replace理解

var a 135去測試不去測試,測試又測試 a.replace u6d4b u8bd5 g,你好 135去你好不去你好,你好又你好 上文對測試兩字進行替換,使用replace方式時需要對中文進行unicode轉碼 可以用這個 進行得出結果 u6d4b u8bd5 參考這段話 還有str.repla...

replace中的正則

replace 把原有的字元替換成新的字元 var str pku2016pku2017 str str.replace pku pkusoft console.log str pkusoft2016pku2017在不使用正則的情況下,每次執行只能替換乙個字元,每次執行都是從0開始替換,有重複的,無...

正則的捕獲

正則的捕獲 exec,返回的結果是陣列或null 先看個demo var reg d var str hua123hua456 var result reg.exec str console.dir result 123 index 3,input hua123hua456 console.log ...