繁体   English   中英

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

[英]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,你可能想要包括其他单位作为有效的单位,如ptem%等...如下面的正则表达式

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

你可以通过Rubular测试它

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

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

http://csslint.net/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM