[英]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.