js中match()正则表达式的疑问 var re1 = /.*bbb/g;var re2 = /.*?bbb/g;alert("abbbaabbbaaabbbb1234".match(re1)+"");//abbbaabbbaaabbbbalert("abbbaabbbaaabbbb1234".match(re2)+"");//abbb,aabbb,aaabbb为什么match(re1)时不会像match(re2)时那样输出数组形式? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 因为match(re1)没匹配成功,原数据返回(也就是只返回一个数组)第二个匹配出三个数组!说白了就是你这个问号问题:var re1 = /.*bbb/g;var re2 = /.*?bbb/g; 属于贪婪模式的量词,也叫做匹配优先量词,包括:“{m,n}”、“{m,}”、“?”、“*”和“+”。在匹配优先量词后加上“?”,即变成属于非贪婪模式的量词,也叫做忽略优先量词,包括:“{m,n}?”、“{m,}?”、“??”、“*?”和“+?”。可见 ,lz的第一个属于贪婪模式,第二个是非贪婪模式匹配。贪婪模式 :就是在整个表达式匹配成功的前提下,尽可能最大长度的匹配非贪婪模式:匹配特点是在长度尽可能小的范围内匹配,多次匹配,知道整个字符串结束。 第一个是贪婪模式匹配的,.*匹配abbbaabbbaaabbbb1234,后面不是bbb,吐出一个字符.*匹配abbbaabbbaaabbbb123,后面不是bbb,再吐出一个字符直到.*匹配abbbaabbbaaab,后面为bbb,匹配成功返回abbbaabbbaaabbbb 两个返回的都是数组,只不过 length为1的数组被alert出来就看似成了字符(没有逗号) var re1 = /.*bbb/g; var re2 = /.*?bbb/g; window.console && console.log("abbbaabbbaaabbbb1234".match(re1)); //["abbbaabbbaaabbbb"] alert("abbbaabbbaaabbbb1234".match(re1) instanceof Array);//abbbaabbbaaabbbb alert("abbbaabbbaaabbbb1234".match(re2) instanceof Array);//abbb,aabbb,aaabbb至于?,是正则中非贪婪模式。楼主可以在这里学习下http://blog.csdn.net/lxcnn/article/category/538256 初学求指导 急啊,js正则表达式问题? 关于setTimeout的问题 在JS里,如何给TreeView的当前选中节点设置背景色并显示出来? 简单的问题 马上结贴 关注有份~~ jsp页面上画线如何实现? 这个函数是什么意思 JQuery选择器问题 请问如何用下拉框改变某个表格或文字的颜色? 我想做这样一个form,该怎么写? 关于层的问题 哪个兄弟帮忙写个时间比较js
第二个匹配出三个数组!
说白了就是你这个问号问题:
var re1 = /.*bbb/g;
var re2 = /.*?bbb/g;
在匹配优先量词后加上“?”,即变成属于非贪婪模式的量词,也叫做忽略优先量词,包括:“{m,n}?”、“{m,}?”、“??”、“*?”和“+?”。可见 ,lz的第一个属于贪婪模式,第二个是非贪婪模式匹配。
贪婪模式 :就是在整个表达式匹配成功的前提下,尽可能最大长度的匹配
非贪婪模式:匹配特点是在长度尽可能小的范围内匹配,多次匹配,知道整个字符串结束。
.*匹配abbbaabbbaaabbbb1234,后面不是bbb,吐出一个字符
.*匹配abbbaabbbaaabbbb123,后面不是bbb,再吐出一个字符
直到
.*匹配abbbaabbbaaab,后面为bbb,匹配成功
返回
abbbaabbbaaabbbb
var re2 = /.*?bbb/g;
window.console && console.log("abbbaabbbaaabbbb1234".match(re1)); //["abbbaabbbaaabbbb"]
alert("abbbaabbbaaabbbb1234".match(re1) instanceof Array);//abbbaabbbaaabbbb
alert("abbbaabbbaaabbbb1234".match(re2) instanceof Array);//abbb,aabbb,aaabbb至于?,是正则中非贪婪模式。楼主可以在这里学习下
http://blog.csdn.net/lxcnn/article/category/538256