使用regex删除alert()标记

Removing the alert() tag using regex

本文关键字:标记 alert regex 删除 使用      更新时间:2023-09-26

我正在尝试构建HTML解析器,例如用"替换alert("hi there123");
所以

alert(123); var hello = 0;
console.log(hello);

将成为:

var hello = 0;
console.log(hello);

有人建议使用regex,所以我深入研究了一下。现在这是我在网上找到的:
something(.*?)something会抓取单词"something"answers"somethings"之间的文本,但当我尝试使用单词"alert()"时,请注意),它不起作用。

第页。S.我想做的是,首先删除alert()之间的文本,然后删除alert);类似:string.replace("alert();", "");

regex是否在每次出现时都循环?

如果有人有更好的解决方案,一定要通知我。

如有任何帮助,我们将不胜感激。

您应该有这样的正则表达式:

/(alert'((.*)');)/g

跳过括号在这里很重要。

匹配每个字符。

*匹配n次。

''转义以下字符

g修饰符:全局修饰符,不只返回第一个匹配项。

此处示例:https://regex101.com/r/fD8tQ8/1

您需要退出():

alert'(.*?');

演示:https://regex101.com/r/sL6fM6/1

还要注意,你可以一次完成。

重要提示:如果alert(...)中的表达式中有括号,这将不起作用。这应该通过更棘手的正则表达式来处理。

您必须转义一些字符才能实现这一点。

转义正则表达式的括号
并转义.replace()方法的双引号。

最后,为了测试您的正则表达式,这里有一个很好的正则表达式测试仪:https://regex101.com/#javascript

像这样的东西应该对你有用:

string.replace(/alert'([''|'"](.*)[''|'"]')';/gmi, "");

在此CodePen中进行了测试。