用于css定义的正则表达式,其中包含特定的名称和值

时间:2012-09-03 13:26:11

标签: css regex

我必须将所有css定义与名称“test”和颜色匹配:灰色。 例如:

a.test { color:grey; }.test { color:grey;}a.test:affter, a.test { font-size: 10px; color: gray;}

因此必须处理多个\s\r\n和其他人。

我已经得到了什么:

test(\s|\r|\n|[:a-zA-Z()0-9])*\{([a-zA-Z:,\s\n\r-0-1;]*)color[\s\n\r:]*gray([a-zA-Z:,\s\n\r-0-1;]*)\}

但它在某些地方无效:http://regexr.com?32191

请帮助:)


来自@nhahtdh的解决方案,对我来说最合适

\.test[:a-zA-Z()0-9\s.,]*\{[a-zA-Z:,\s0-1;-]*color[\s:]*gray([a-zA-Z:,\s0-1;-]*‌​)\}

2 个答案:

答案 0 :(得分:0)

此正则表达式与您的测试用例相匹配。

[^\r]*\.test(\s|\r|\n|[:a-zA-Z()0-9])?[^{]*\{([a-zA-Z:,\s\n\r-0-1;]*)color[\s\n\r:]*gray([a-zA-Z:,\s\n\r-0-1;]*)\}

http://regexr.com?32197

但问题更复杂。在不同的上下文中可能存在任意字符,例如URL,过滤器等。只要你只需要匹配这些非常具体的案例,就应该有效。

答案 1 :(得分:0)

我做了一个相当简单的事:

[^{]*\.test(?:{|[ :.][^{]*{)[^}]*color[ \n\r]*:[ \n\r]*gray *;[^}]*}

这应符合您的规范,但不会捕获任何CSS错误。

http://regexr.com?321ah