正则的[],(.)*?和(.*?),贪婪和惰性

前端之家收集整理的这篇文章主要介绍了正则的[],(.)*?和(.*?),贪婪和惰性前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

1.在[]中的表达式不要使用 .,要不然效果达不到

2.(.)?和(.?)的区别,前者分组只会匹配最后一个字符,而(.?)会获取匹配的整个串,此处的?是惰性匹配,

/a(.*?)c/g.exec("aabcdefc dd");
==>["aabc","ab"];此处"ab"就是(.*?)的内容
/a(.)*?c/g.exec("aabcdefc dd");
==>["aabc","b"];此处"b"就是(.)*?的内容

3.惰性匹配和贪婪匹配

贪婪匹配会尽量多的去匹配字符,惰性只会尽可能少的匹配,*就是贪婪匹配,*?是惰性匹配,具体的惰性匹配表如下:

表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"]

猜你在找的正则表达式相关文章