[英]Regex to find specific word and remove complete tag attrubute from html
我想在我的 HTML 文本中捕获javascript:***
,当正则表达式找到它时,我希望它的属性也被删除,我还创建了一个正则表达式,但它没有涵盖所有情况,我附上了我的代码和该正则表达式未涵盖的情况。
正则表达式:
/(?<=<[_a-zA-Z][^<]*?)\s+href="javascript:[^"]*"/
不包括以下情况:
href='javascript:
href = "javascript:
href=" javascript:
href=
"javascript:
所以我想要找到javascript:
并删除其完整属性的东西
我们可以通过几种方式改进这一点。 看到这个正则表达式:
((?<=<[_a-zA-Z][^<]*?))\s+href\s*=\s*["']?\s*javascript:[^"<]*["']?
'
, "
以及不带引号(只要 URL 中没有空格)。这在表达式中得到更正\s*
表示“零个或多个空白字符(空格、换行符等)”,因此我们可以忽略可选的空白。$1
替换将完全删除href
。 您可以在此处查看正在运行的正则表达式:
https://regex101.com/r/1SPJKy/1
它适用于以下测试用例:
<a href="javascript:console.log(document.cookie)"></a>
<a href='javascript:console.log(document.cookie)'></a>
<a href = "javascript:console.log(document.cookie)"></a>
<a href=" javascript:console.log(document.cookie)"></a>
<a href=javascript:console.log(document.cookie)></a>
<a
href=
"javascript:console.log(document.cookie)">
</a>
话虽如此,HTML 需要被解析。 将其用作 DOM,而不是文本。
AFAIK CKEditor 的 HTML 元素可作为 DOM 元素访问。 例如,您可以使用此 JavaScript 来 select 这些元素:
document.querySelectorAll('[href*=javascript]')
无论属性是如何编写的,这都会得到这些元素。 如果浏览器无法更正它,它不适用于损坏的 HTML。 但是正则表达式有同样的问题,无论如何都不会导致有效的href。
也许你试试看。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.