1. 程式人生 > >正則理解

正則理解

正則的理解

  1. 正則的懶惰性

每一次在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

  1. 正則的貪婪性

每一次匹配都是按照最長的出結果,我們把這種功能叫正則的貪婪性

 

 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. 分組引用  \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