前端之家收集整理的这篇文章主要介绍了
正则的[],(.)*?和(.*?),贪婪和惰性,
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
1.在[]中的表达式不要使用 .,要不然效果达不到
2.(.)?和(.?)的区别,前者分组只会匹配最后一个字符,而(.?)会获取匹配的整个串,此处的?是惰性匹配,
/a(.*?)c/g.exec("aabcdefc dd");
==>["aabc","ab"];此处"ab"就是(.*?)的内容
/a(.)*?c/g.exec("aabcdefc dd");
==>["aabc","b"];此处"b"就是(.)*?的内容
3.惰性匹配和贪婪匹配
@H_
404_39@贪婪匹配会尽量多的去匹配字符,惰性只会尽可能少的匹配,*就是贪婪匹配,*?是惰性匹配,具体的惰性匹配表如下:
@H_
404_39@表5.懒惰限定符
代码/语法 |
说明 |
*? |
重复任意次,但尽可能少重复 |
+? |
重复1次或更多次,但尽可能少重复 |
?? |
重复0次或1次,但尽可能少重复 |
{n,m}? |
重复n到m次,但尽可能少重复 |
{n,}? |
重复n次以上,但尽可能少重复 |
/a(.*?)c/g.exec("aabcdefc dd");
==>["aabc","ab"];此处匹配的是"aabc"
/a(.)*c/g.exec("aabcdefc dd");
==>["aabcdefc","f"];此处匹配的是"aabcdefc",比上面的aabc串长
/a(.*)c/g.exec("aabcdefc dd");
==>["aabcdefc","abcdef"]