我在VScode中有一个正则表达式,用于查找没有alt =“”和title =“”标记的img行(用于SEO),而我找不到格式错误的多行的解决方案。
例如我的正则表达式:
<img((?!alt\=\".*\").)*((?!title\=\".*\").)*>
适用于:
但不适用于:
。
我尝试了类似的操作:
<img\n*\t*\s*\r*((?!alt\=\".*\").)*((?!title\=\".*\").)*\n*\t*\s*\r*>
但是它也不能工作。
我正在寻找解决方案,因为我有15k行的html代码具有第二种格式设置(可能是从wordpress帖子中复制粘贴)。
如果您要复制它,这是我的示例行:
<img class="img-responsive vertical-center" src="someImage.png" style="height: 65%; width: auto;" alt="" >
答案 0 :(得分:1)
您要的东西真的很棘手,我最近来的是交换。除非您在regex参数中指定,否则为[^>]。将不匹配换行符。
<img((?!alt\=\".*\")[^>])*((?!title\=\".*\")[^>])*>
但是实际上不建议您使用正则表达式解析html,您可以在this demo中看到。即使测试用例数量有限,也很难抓住所有问题。参数可以是任何顺序,可以包含转义字符,并且标记可以相互对接。
我想您知道HTML的干净程度如何,以及属性中的值是多少。也许我强调的大多数测试用例都不适用于您?但您的问题并未指明这一点。如果我做出的假设有误,请修改您的问题。