【发布时间】:2011-05-09 12:01:40
【问题描述】:
我正在尝试将所有 @import 字符串替换为一个字符串,例如
var str = 'buttons .reprint{height:56px;background-position:-47px -1496px;}@import "../common/buttons.css";@import "../screen/screen-1.css";@import "../screen/screen-2.css";@import "../screen/screen-3.css";@import "../screen/screen-5.css";@import "../screen/screen-6.css";@import "../screen/screen-7.css";@import "../screen/screen-quick-messages.css";@import "../screen/reset-password.css";#xml-data{display:none;}body{font-family:"Helvetica Neue",HelveticaNeue,Helvetica-Neue,Helvetica,sans-serif;}ul{padding:0;}body,section{width:768px;}';
如果我写,它会起作用:
console.log(str.match(/@import\ /g));
但是如何在单行中指定所有 @import 声明,例如@import "../screen/screen-1.css";
console.log(str.match(/@import\ .+;/g));
没用。
【问题讨论】:
-
你想用什么替换导入?
-
至于你的
.+“没用”,我能想到的“没用”的类型是匹配太多了,因为+是贪心的,意思是它将转到它找到的最后一个分号。将?添加到量词使其变得非贪婪 - 所以/@import\ .+?;/g会起作用。但是您可能会在 URL 中使用分号,因此 Tim 的回答显然要好得多。只是想解释一下出了什么问题,以防下次有帮助。但要尽可能具体,这样可以避免错误。
标签: javascript regex node.js