[英]How to find everything that is not matching a regular expression
我想搜索成千上万的HTML代码,以查看高度,宽度或任何其他CSS的不良做法。
例如,我想得到高度未提供单位的所有地方,例如height:40
应该找到,但height:40px
不应该。
为此我使用搜索程序代理ransack,我可以在其中放置正则表达式来搜索文件。
目前我的正则表达式是:
(height:)[\s]*[0-9]*\.?[0-9]+(px)
这找到了像height:40px
一样的东西height:40px
。 (后来我要添加宽度或其他东西)
我的问题是如何在所有这些之上做一个NOT?
或者是否有任何其他好的应用程序来搜索正则表达式的文件?
使用否定前瞻(?!regex)
,例如:
height:\s*\d+(?:\.\d+)?(?!px|\d)
需要\\d
来防止回溯替代匹配。
以这种方式使用负向前瞻:
(?!height:\s*\d+(?:\.\d+)?px)height:\s*\d+(?:\.\d+)?
考虑到你正在使用css,你可能想要包括其他单位作为有效的单位,如pt
, em
, %
等...如下面的正则表达式
(?!height:\s*\d+(?:\.\d+)?(?:px|pt|em|%|cm|mm|in|ex|pc))height:\s*\d+(?:\.\d+)?
你可以通过Rubular测试它
考虑使用已经执行此操作的程序,并添加自己的规则。 通常,修复源代码的做法称为“linting”。 因此,您可以快速找到类似CSSLint的东西,它是开源的并允许自定义规则:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.