1、什么是貪婪模式和非貪婪模式?
先看一個(gè)例子:```
var str = 'my "name" is "chen" nice to meet you';
str.match(/".*"/g);
str.match(/".*?"/g)
```
貪婪模式:在進(jìn)行正則匹配時(shí),在滿足匹配條件的前提下盡可能多的去匹配元素,這種匹配模式叫貪婪模式,默認(rèn)情況下匹配模式為貪婪模式;如上述str.match(/.*/g)即貪婪模式去匹配,匹配結(jié)果為"name" is "chen"";
非貪婪模式:在滿足匹配條件的前提下,盡可能少的去匹配元素,即非貪婪模式,可以通過(guò)在表示匹配次數(shù)的表達(dá)式后面加上?來(lái)將正則匹配類型設(shè)置成非貪婪模式,如上述str.match(/".*?"/g)即為非貪婪模式,匹配的結(jié)果為["name","chen"]。
2、\d,\w,\s,[a-zA-Z0-9],\b,.,*,+,?,x{3},^,$分別是什么?
\d 表示數(shù)字字符,即0~9中間的任意一個(gè)字符;
\w 表示單詞字符,包括大小寫(xiě)字母,數(shù)字和下劃線;
\s 表示空格;
[a-zA-Z0-9] 表示a-zA-Z0-9之間的任意一個(gè)字符;
\b 單詞邊界,即空格、換行、回車、制表符、-等,
.? 除回車和換行之外任意字符,
* 元素出現(xiàn)任意次,+ 元素出現(xiàn)一次或多次,? 元素出現(xiàn)0次或1次,x{3} x元素出現(xiàn)3次,
^ 在中括號(hào)中表示取反,如[^abcd123]表示不為abcd123中的任意一個(gè)字符,^在其他地方表示以什么開(kāi)頭,如:/^(hello)/g 表示匹配以hello開(kāi)頭的元素;
$? 表示以什么為結(jié)尾。