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);