如何找到与正则表达式不匹配的所有内容

时间:2012-09-05 14:43:43

标签: css regex regex-negation

我想搜索成千上万的HTML代码,查看高度,宽度或任何其他CSS的不良做法。

例如,我想获得所有未提供单位高度的地方,例如应找到height:40,但height:40px不应该

为此我使用搜索程序代理搜索,我可以在其中放置正则表达式来搜索文件。

目前我的正则表达式为:

(height:)[\s]*[0-9]*\.?[0-9]+(px) 

这会找到像height:40px这样的所有内容。 (后来我想添加宽度或其他东西)

我的问题是如何在所有这些之上做出一个NOT?

或者有没有其他好的应用程序来搜索正则表达式的文件?

3 个答案:

答案 0 :(得分:3)

使用否定前瞻(?!regex),例如:

height:\s*\d+(?:\.\d+)?(?!px|\d)
需要

\d来防止回溯替代匹配。

答案 1 :(得分:0)

以这种方式使用否定前瞻:

(?!height:\s*\d+(?:\.\d+)?px)height:\s*\d+(?:\.\d+)?

考虑到您使用的是css,您可能希望将其他单元包含为有效的单位,例如ptem%等...如下面的正则表达式

(?!height:\s*\d+(?:\.\d+)?(?:px|pt|em|%|cm|mm|in|ex|pc))height:\s*\d+(?:\.\d+)?

您可以通过Rubular

进行测试

答案 2 :(得分:0)

考虑使用已经执行此操作的程序,并添加自己的规则。通常,修复源代码的做法称为“linting”。因此,您可以快速找到类似CSSLint的东西,它是开源的并允许自定义规则:

https://github.com/stubbornella/csslint/wiki/Rules

http://csslint.net/