关闭所有HTML未关闭的IMG标记

Geo*_*ton 19 regex xhtml

是否可以对所有未闭合的IMG标签进行正则表达式替换?如果是这样,我将如何识别:

  <img src="..." alt="...">
Run Code Online (Sandbox Code Playgroud)

......作为潜在的替代品?

   = <img src="..." alt="..."/>
Run Code Online (Sandbox Code Playgroud)

更新:我们有数百个页面和数千个图像标签,所有这些都必须关闭.我并没有停留在RegEx上 - 除了手动更新所有IMG标签之外,任何其他方法都足够了.

Tim*_*ker 13

(<img[^>]+)(?<!/)>
Run Code Online (Sandbox Code Playgroud)

将匹配img未正确关闭的标记.它要求你正在使用的正则表达式支持lookbehind(Ruby和JavaScript不会,但大多数其他人都这样做).反向引用号 1将包含匹配,所以如果你搜索这个正则表达式并替换\1/>你应该是好的去.

如果您需要考虑>内部属性的可能性,您可以使用

(<img("[^"]*"|[^>])+)(?<!/)>
Run Code Online (Sandbox Code Playgroud)

这将匹配,例如,

<img src="image.gif" alt="hey, look--->">
<img src="image/image.gif">
Run Code Online (Sandbox Code Playgroud)

然后离开

<img src="image/image.gif" />
Run Code Online (Sandbox Code Playgroud)

单独.