如何在 Javascript 中忽略正则表达式中的换行符?
例如:
data = "\
<test>11\n
1</test>\n\
#EXTM3U\n\
"
var reg = new RegExp( "\<" + "test" + "\>(.*?)\<\/" + "test" + "\>" )
var match = data.match(reg)
console.log(match[1])
结果:未定义
如何在 Javascript 中忽略正则表达式中的换行符?
例如:
data = "\
<test>11\n
1</test>\n\
#EXTM3U\n\
"
var reg = new RegExp( "\<" + "test" + "\>(.*?)\<\/" + "test" + "\>" )
var match = data.match(reg)
console.log(match[1])
结果:未定义
在 JavaScript 中,没有标志告诉RegExp()
它.
应该匹配换行符。因此,您需要使用一种解决方法,例如[\s\S]
.
您的 RegExp 将如下所示:
var reg = new RegExp( "\<" + "test" + "\>([\s\S]*?)\<\/" + "test" + "\>" );
\
您在第 2 行末尾缺少一个 JS 换行符。
另外,将正则表达式更改为:
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]);
通过阅读这篇文章:如何在多行上使用 JavaScript 正则表达式?
我来了,它有效:
var data = "<test>11\n1</test>\n#EXTM3U\n";
reg = /<test>([\s\S]*?)<\/test>/;
var match = data.match(reg);
console.log(match[1]);
这是一个小提琴:http: //jsfiddle.net/Rpkj2/
更好的是你可以使用[\s\S]
而不是 . 用于多行匹配。
它是最常见的 JavaScript 习惯用法,用于匹配包括换行符在内的所有内容。它比基于交替的方法(如(.|\n)
.
编辑:明白了:
我试图在记事本++中使用这个正则表达式但问题是它从头到尾找到整个文本
我的正则表达式:
<hostname-validation>(.|\s)*<\/pathname-validation> (finds everything)
/<hostname-validation>(.|\s)*<\/pathname-validation>/ (finds nothing)
/\<hostname-validation\>([\s\S]*?)\<\/pathname-validation\>/ (finds nothing)
**<hostname-validation>([\s\S]*?)<\/pathname-validation> (my desired result)**
我在其中使用的文本:
<hostname-validation>www.your-tag-name.com</hostname-validation>
<pathname-validation>pathname</pathname-validation> <response-validation nil="true"/>
<validate-absence type="boolean">false</validate-absence> (...) <hostname-validation>www.your-tag-name.com</hostname-validation>
<pathname-validation>pathname</pathname-validation> <response-validation nil="false"/>
<validate-absence type="boolean">false</validate-absence> (...) <hostname-validation>www.your-tag-name.com</hostname-validation>
<pathname-validation>pathname</pathname-validation> <response-validation nil="true"/>
<validate-absence type="boolean">false</validate-absence> (...)