javascript正则expression式单行

我试图用一个单一stringreplace所有@importstring,例如

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总是有这样的格式:

@import(空格)(引用)(一个或多个非引号字符)(引号)(分号)

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

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

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

我知道它已经回答了,但我只是想提供一个更简单的版本的上述模式。

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

它匹配的模式:

 @import (anything NOT a semicolon) (semicolon) 

很好用。 以下是我如何使用它的一个例子:

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