我试图让HTML头两个样式注释标记之间的内容,/*color_1*/和/*color_1_end*/.我试过了:
var html = '/*color_1*/.welcome p, .intro p { color: #75735d;}/*color_1_end*/';
var testRE = html.match(/\/*color_1*\/(.*?)\/*color_1_end*\//i);
console.log(testRE);
Run Code Online (Sandbox Code Playgroud)
但我想我有逃避错误,或完全错误的正则表达式错误.如何使用Javascript获取这些标签之间的内容?
该*字符在正则表达式中具有特殊意义 - 它是一个量词,表示"前一个字符,字符类或组的重复次数为零或更多".
因此,如果要匹配文字*字符,则需要将其转义,如下所示:
var testRE = html.match(/\/\*color_1\*\/(.*?)\/\*color_1_end\*\//i);
Run Code Online (Sandbox Code Playgroud)
要跨多行进行匹配,你必须使用这个小技巧:
var testRE = html.match(/\/\*color_1\*\/([\s\S]*?)\/\*color_1_end\*\//i);
Run Code Online (Sandbox Code Playgroud)
字符类[\s\S]意味着"匹配任何空格或非空格字符"(即任何字符),但其他元字符也可以工作(例如[\d\D])