Gre*_*een 0 javascript regex quantifiers regex-greedy
我不明白这种行为.我有这样的例子,需要抓住html评论.
var str = '.. <!--My -- comment test--> ';
var regex1 = /<!--[.]*-->/g;
var regex2 = /<!--.*-->/g;
alert(str.match(regex1)); // null
alert(str.match(regex2)); // <!--My -- comment test-->
Run Code Online (Sandbox Code Playgroud)
第二个正则表达式regex2
正常,输出正是所需的.第一个节目null
.我不明白其中的区别.RegExpressions <!--[.]*-->
和<!--.*-->
意思相同 - " <!--
除了换行符之外的任何字符,从0开始到尽可能多,并以-->
" 完成".但对于第二个它是有效的,而第一个没有.为什么?
UPD.我已阅读评论并有更新.
var str3 = '.. <!--Mycommenttest--> ';
var str4 = '.. <!--My comment test--> ';
var regex3 = /<!--[\w]*-->/g;
var regex4 = /<!--[\s\S]*-->/g;
alert(str.match(regex3)); // <!--Mycommentstest-->
alert(str.match(regex4)); // <!-- My comment test -->
Run Code Online (Sandbox Code Playgroud)
所以可以使用有限的匹配变量来匹配任何东西.那么应该采用哪种方式正确使用RegExps?有[]
没有?无法得到差异,两者都给出正确的输出.