繁体   English   中英

Javascript正则表达式字符串替换多行字符串

[英]Javascript regular expression string-replacement of multi-line strings

使用JavaScript正则表达式替换,尝试替换<head></head>标记之间的任何内容,以便:

<head>
   Multiline foo
</head>
<body>
  Multi line bar
</body>

被替换为:

<body>
  Multi line bar
</body>

并尝试使用非常基本的: <head(.*)\\/head>/m ,它不起作用。 当从字符串中删除换行符时,它工作正常。 无论什么类型的换行,什么是魔术?

问题是点元字符与换行符不匹配。 在大多数正则表达式中,您可以通过设置“DOTALL”或“单行”模式强制它匹配所有内容,但JavaScript不支持它。 相反,你必须更换的东西, 匹配任何东西的点。 最常见的习语是[\\s\\S] (“任何空白字符或任何不是空格的字符”)。

总而言之,Alan是对的,使用/<head([\\s\\S]*)\\/head>/它应该按照你的意愿行事。

我用于作业的实际正则表达式是/<head>([\\s\\S]*?)<\\/head>/但差异可能无关紧要,因为它只是确保没有贪婪的匹配永远不应该在那里的第二个头标记:)

暂无
暂无

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

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