如何使用正则表达式从字符串中提取CSS规则

时间:2012-03-02 03:39:29

标签: javascript css regex

在Javascript中,我有一个CSS选择器,我想提取规则:

var cssOriginalString = 'p:hover { color: red; font-weight: bold;}';
var cssFinalString = 'color: red; font-weight: bold;';

我的目标是将所有规则分组到一个数组中:

var rulesArray = ['color: red;', 'font-weight: bold;'];

有什么想法吗?

- appcropolis

2 个答案:

答案 0 :(得分:1)

您可以尝试使用正则表达式:

[a-z-]+ *:[^:;]+;

[a-z-]+匹配css属性名称。基于W3schools CSS attributes reference,我很确定它们是小写字母和连字符。但是,如果您有不同的感受(允许大写字母等),您可以修改它。我推荐的最宽松的正则表达式是[\w-]+,它允许使用字母,数字,下划线和连字符。

*:是分隔冒号,周围允许有空格。

[^:;]+;是属性值后跟分号。我已经说过,属性值不能包含冒号:或分号;,以防止它跨多个属性匹配。您也可以在此处尝试.*?;?非常重要,以使匹配非贪婪,因此它与多个属性不匹配。)

答案 1 :(得分:1)

你的问题似乎是要求正则表达式,但它很一般。我需要了解更多关于输入字符串的信息(例如,你可以在同一行上有两个规则集吗?你能在多行上有一个规则集吗?是否可能或者关注“}”出现在规则中?怎么样@查询?)。单行上单个规则集的非常简单的表达式:

cssOriginalString.replace(/.*{([^}]+)}/, '$1');​​​