正則理解
正則的理解
- 正則的懶惰性
每一次在exec()中捕獲的時候,只捕獲第一次匹配的內容,而不往下捕獲了。我們把這叫正則的懶惰性,每一次捕獲的開始位置都是從0開始
var reg=/\d+/;
var st="he45612llo12345"
cosole.log(reg.exec(st))----結果:45612
解決正則的懶惰性呢
修飾符g
正則的例項物件reg上有一個lastIndex屬性 他是正則捕獲的起始位置
var reg=/\d+/g;
var st="he45612llo12345"
cosole.log(reg.exec(st))----結果:45612
cosole.log(reg.exec(st))----結果:12345
cosole.log(reg.exec(st))----結果:null
- 正則的貪婪性
每一次匹配都是按照最長的出結果,我們把這種功能叫正則的貪婪性
var reg=/\d+/;
var st="hello12345"
cosole.log(reg.exec(st))----結果:12345
如何解決正則的貪婪性
在元字元量詞後面加?
var reg=/\d+?/g;
var st="he45612llo12345"
cosole.log(reg.exec(st))----結果:4,5,6,1,2,1,2,3,4,5
補充 迴圈語句 for for in while do---while---
var i=12;
var num=null;
while(i<11){
sum=sum+i;
i++;
}
console.log(sum)//先判斷後執行
結果:null;
var i=12;
var num=null;
do{
sum=sum+i;
i++;
}
while(i<11)
console.log(sum)//先判斷後執行
結果:12
二 分組捕獲 正則帶() 在數分組的個數時從左往右
var reg=/(a)(b)/ 就相當於大正則裡面帶了兩個小正則
第一組是(a) 第二組是(b)
分組捕獲的作用
- 改變優先順序
- 分組引用 \1,\2
\2代表和第二個分組出現一模一樣的內容,\1代表和第一個分組出現一模一樣的內容
var reg/(\w)\1(\w)\2/
var st="ssdd"
var s=reg.test(st)
console.log(s)
Reg中的規則是第一個是一個分組 且是一個單詞字元 第二個是個分組引用要求和第一組一模一樣,第三個是第二個分組且是一個單詞字元,第四個是一個分組引用,要求和第二組一模一樣。
3.分組捕獲
分組的捕獲前提是正則存在分組,不僅把大正則的內容捕獲到,把小正則的內容也捕獲到。
var reg=/(a)(b)/
/ab/ /a/ /b/
var st="absd"
console.log(reg.exec(st))//ab,a,b
怎樣解除分組中分組捕獲呢,如果你不想捕獲某一個分組中的內容,在這個分組的前面加上?:就可以了
var reg=/(a)(?:b)/
/ab/ /a/ /b/
var st="absd"
console.log(reg.exec(st))//ab,a