如何在regexp中忽略换行符?

Bdf*_*dfy 11 javascript

如何在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)

结果:未定义

t.n*_*ese 9

在JavaScript中,没有标志告诉RegExp .也应该匹配换行符.所以你需要使用一个解决方法,例如[\s\S].

您的RegExp将以这种方式看起来:

var reg = new RegExp( "\<" + "test" + "\>([\\s\\S]*?)\<\/" + "test" + "\>" );
Run Code Online (Sandbox Code Playgroud)


Sam*_*iew 8

\在第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/


qur*_*ur2 6

通过阅读这篇文章:如何在多行中使用 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/