簡體   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