js高階正則解析

2022-08-19 03:18:16 字數 1575 閱讀 1163

1.var reg=/./   var reg=/\./

前者代表任意乙個字元而後者代表這個字串中得有乙個.

2.?的使用

如果單獨的乙個字元後面帶? var reg=/\d?/ /n?/

代表乙個或0個這個字元的出現

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

var reg=/\d+?/;

var st="ahfuoi6565232";

console.log(reg.exec(st));

3.捕獲

1.普通捕獲 exec() match()

普通捕獲有懶惰性,給正則新增乙個修飾符g可以解決,match是將所有捕獲的內容放在乙個陣列中並返回。match就是對exec的乙個簡單封裝。

2.分組捕獲 捕獲的方法還是exec 和match

正則在結構上發生了變化,加()

var reg=/(a)(b)/

exec()和match()在非全域性下分組捕獲是相同的,在捕獲的過程中即捕獲大正則裡的內容也捕獲分組中的內容並都返回。

var reg=/(a)(b)/

var st="ab"

console.log(reg.exec(st))

console.log(st.match(reg))

exec()和match()在全域性下的分組捕獲是不一樣的,exec()不變。但是match()只捕獲大正則裡的內容

var reg=/(a)(b)/g

var st="ab"

console.log(reg.exec(st))

console.log(st.match(reg))

分組捕獲的優勢

可以提公升優先順序

可以捕獲引用

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

前提是分組必須在引用之前,如果\2在分組的前面代表普通的表示式???

分組的結果存在正則類regexp的$number屬性下。

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

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

在捕獲的過程中怎樣取消捕獲分組中的內

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

?:和?=的區別

?:取消捕獲分組中的內容的

?=  a(?=s)

var reg=/a(?=b)/

var st="ad"

console.log(reg.exec(st))

4.replace細說

replace是字串的乙個方法,他有兩個引數,用後者將前者替換掉,並返回乙個新的字串,但是沒有改變原來的字串.

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

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

如果第二個引數是匿名函式,每捕獲一次這個匿名函式會執行一次,return的是什麼,那就替換成什麼。這個匿名函式的arguments有三個元素。

var str='雙十一是奧托的活動';

var reg=/雙十一/g;

var ss=str.replace(reg,function(word))

console.log(ss)

Python高階正則

1 importre2 3 p re.compile 0 9 45 m p.match 13435asadb 67print m.group 一 上面的第二行和第三行也可以合併成一行來寫 m p.match 0 9 13435asadb 效果是一樣的,區別在於第一種方式是提前對要匹配的格式進行編譯,...

JS基礎高階 正規表示式

1 regexpbuddy 正規表示式中有些字元有特殊的語法含義,是不能直接使用的,必須使用 進行轉義後才能使用。正規表示式使用如下語法匹配乙個範圍內的字元 語法 含義 示例 abc 匹配集合內的任意字元 ac abc 匹配不在字符集內的任意字元 ac 0 9 匹配任意乙個數字 a z 匹配任意乙個...

高階正則用法 預查

工欲善其事必先利其器,正規表示式無疑是乙個非常強大的工具,從txt,excel,word還有眾多編輯器,還有各種開發語言都有它的蹤影.下面就說下正規表示式較為高階的預查用法 包含4個關鍵字元順序 只能同時出現乙個 預查校驗的標誌 否定 肯定 表示捕獲分組,會把每個分組裡的匹配的值儲存起來,使用 n ...