javascript正则表达式单行

javascript正则表达式单行,javascript,regex,node.js,Javascript,Regex,Node.js,我正在尝试将所有@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 "../sc

我正在尝试将所有@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”


不起作用。

如果我错了,请纠正我,但似乎导入的
@import
始终具有以下格式:

@导入(空白)(引号)(一个或多个非引号字符)(引号)(分号)

如果这是真的,那么让我们相应地构建正则表达式:

 /@import\s*"[^"]+";/

这应该分别与每个
@import
语句匹配。

如果我错了,请更正我,但似乎
@import
始终具有以下格式:

@导入(空白)(引号)(一个或多个非引号字符)(引号)(分号)

如果这是真的,那么让我们相应地构建正则表达式:

 /@import\s*"[^"]+";/

这应该分别匹配每个
@import
语句。

我知道它已经得到了回答,但我只想提供上面模式的更简单版本

我需要这个正则表达式来从我合并在一起的css文件中删除@import语句

它符合以下模式:

@import (anything NOT a semicolon) (semicolon)
效果很好。下面是我如何使用它的一个示例:

// $mergedStyles set earlier in script...

// matches the pattern 
// ["@import"]+[anything NOT a semicolon]+semicolon
// e.g.: "@import url("stuff");
$pattern = '/@import[^;]*;/';
$mergedStyles = preg_replace($pattern, '', $mergedStyles);

我知道已经有答案了,但我只想提供上面模式的更简单版本

我需要这个正则表达式来从我合并在一起的css文件中删除@import语句

它符合以下模式:

@import (anything NOT a semicolon) (semicolon)
效果很好。下面是我如何使用它的一个示例:

// $mergedStyles set earlier in script...

// matches the pattern 
// ["@import"]+[anything NOT a semicolon]+semicolon
// e.g.: "@import url("stuff");
$pattern = '/@import[^;]*;/';
$mergedStyles = preg_replace($pattern, '', $mergedStyles);

你想用什么来代替导入?至于你的
+
“不起作用”的原因,我能想到的“不起作用”类型是它匹配太多,因为+是贪婪的,这意味着它将转到它找到的最后一个分号。将
添加到量词会使它变得不贪婪-因此
/@import\.+/g
会起作用。但是URL中可能有分号,因此Tim的答案显然要好得多。只是想解释一下什么地方出了问题,以防下次有帮助。但请尽可能具体,这样可以避免错误。您试图用什么替换导入?至于您的
+
“不起作用”的原因,我能想到的“不起作用”类型是它匹配太多,因为+是贪婪的,这意味着它将转到找到的最后一个分号。将
添加到量词会使它变得不贪婪-因此
/@import\.+/g
会起作用。但是URL中可能有分号,因此Tim的答案显然要好得多。只是想解释一下什么地方出了问题,以防下次有帮助。但请尽可能具体,它可以避免错误。感谢分享,我更喜欢这个解决方案,因为它更通用,并捕获了@import的更多变体。感谢分享,我更喜欢这个解决方案,因为它更通用,并且捕捉到了@import的更多变体。我认为somethingkindawierd给出的解决方案更通用,应该被标记为答案。@Roboblob:可能是这样(尽管Alex似乎不同意),但为什么这是否决我答案的理由?我认为某个Kindawierd给出的解决方案更一般,应该被标记为答案。@Roboblob:可能是(尽管Alex似乎不同意),但为什么这是否决我答案的理由?