繁体   English   中英

如何忽略正则表达式中的换行符?

[英]How to ignore newline in regexp?

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

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]);

这是一个小提琴: http : //jsfiddle.net/Rpkj2/

更好的是您可以使用[\\s\\S]而不是 . 用于多行匹配。

它是最常见的 JavaScript 习惯用法,用于匹配包括换行在内的所有内容。 与基于交替的方法(.|\\n)(.|\\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> (...)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM