我不明白这种行为。我有这样的例子,需要捕捉 html 评论。
var str = '.. <!--My -- comment test--> ';
var regex1 = /<!--[.]*-->/g;
var regex2 = /<!--.*-->/g;
alert(str.match(regex1)); // null
alert(str.match(regex2)); // <!--My -- comment test-->
第二个正则表达式regex2
工作正常,准确输出所需内容。首秀null
。而且我不明白其中的区别。正则表达式<!--[.]*-->
和<!--.*-->
含义相同 - “在<!--
将除换行符之外的任何字符从 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 -->
所以可以使用有限的匹配变量来匹配任何东西。那么应该使用哪种方式正确使用 RegExps 呢?有[]
没有他们?无法区分,两者都给出正确的输出。