如何用正则匹配onerror并替换为空?" />

如何用正则匹配onerror并替换为空?

发布于 2022-09-11 20:14:41 字数 752 浏览 14 评论 0

<img alt="图片" onerror="alert(111)" id="pic">
<div class="bar" onclick="alert(222)" id="do">

想用js的replace替换onXXXX=为空,但不知道正则该怎么写,求大神帮忙
补充:
比如把onerror=替换为空
onclick= 也替换为空
最终结果希望是这样的,只需要把事件替换掉就可以了

<img alt="图片" "alert(111)" id="pic">
<div class="bar" "alert(222)" id="do">

后来找到的方法,只是需要用$2和$4拼接

var str='<img alt="图片" onerror =alert(111) id="pic"><div class="bar" onclick=alert(111) id="do">'
var reg=/(<.*?)(on.*?=)(.*?>)/ig
var res=str.replace(reg,function($1,$2,$3,$4){
   return $2+$4
})
console.log(res)
//res为<img alt="图片" alert(111) id="pic"><div class="bar" alert(111) id="do">

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

二智少女 2022-09-18 20:14:41

我这边给的正则表达式是这样的(on[a-z]*\=\")([^\s]*)("),只是匹配了中间的onXXXX="abc",将匹配的内容进行分组,前半部分是onXXXX="第一组,abc为第二组,"代表第三组,然后用第二组的数据直接替换到这个匹配的内容即可,希望这次能帮到您
clipboard.png
clipboard.png

如果中间需要保留双引号,正则表达式是这样的(on[a-z]*\=)([^\s]*),输出结果如下所示:

clipboard.png

指尖上的星空 2022-09-18 20:14:41

如果确定没有其他规则兼容的话,硬匹配就可以啊

`<img alt="图片" onerror="alert(111)" id="pic">
<div class="bar" onclick="alert(222)" id="do">`.replace(/(onerror=)|(onclick=)/g,'')
凉城凉梦凉人心 2022-09-18 20:14:41

这是我的答案,通过捕获匹配内容直接替换为空clipboard.png

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文