如何在Javascript中忽略regexp中的换行符?
例如:
data = "\
<test>11\n
1</test>\n\
#EXTM3U\n\
"
var reg = new RegExp( "\<" + "test" + "\>(.*?)\<\/" + "test" + "\>" )
var match = data.match(reg)
console.log(match[1])
Run Code Online (Sandbox Code Playgroud)
结果:未定义
在JavaScript中,没有标志告诉RegExp .也应该匹配换行符.所以你需要使用一个解决方法,例如[\s\S].
您的RegExp将以这种方式看起来:
var reg = new RegExp( "\<" + "test" + "\>([\\s\\S]*?)\<\/" + "test" + "\>" );
Run Code Online (Sandbox Code Playgroud)
您\在第2 行末尾缺少JS换行符.
另外,将regexp更改为:
var data = "\
<test>11\n\
1</test>\n\
#EXTM3U\n\
";
var reg = new RegExp(/<test>(.|\s)*<\/test>/);
var match = data.match(reg);
console.log(match[0]);
Run Code Online (Sandbox Code Playgroud)
http://jsfiddle.net/samliew/DPc2E/
通过阅读这篇文章:如何在多行中使用 JavaScript 正则表达式?
我带来了它,它有效:
var data = "<test>11\n1</test>\n#EXTM3U\n";
reg = /<test>([\s\S]*?)<\/test>/;
var match = data.match(reg);
console.log(match[1]);
Run Code Online (Sandbox Code Playgroud)
这是一个小提琴: http: //jsfiddle.net/Rpkj2/