使用正则表达式删除alert()标记

时间:2016-08-04 13:39:52

标签: javascript jquery regex

我正在尝试构建HTML解析器,例如将alert(123); var hello = 0; console.log(hello); 替换为“”。
所以

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

将成为:

something(.*?)something

有人建议使用正则表达式,所以我深入研究。 现在这就是我在网上找到的:
string.replace("alert();", "");会抓住“某事”和“某事”之间的文字,但是当我尝试使用“alert(”< - 注意,它不起作用。

P.S。我想要做的是首先删除alert()之间的文本然后删除alert();像这样:CREATE PROCEDURE #usp_TempOne @Input INT, @Output INT OUTPUT as SET @Output = @Input * 2 RETURN GO DECLARE @i INT = 10, @o INT; EXEC #usp_TempOne @i, @o OUTPUT SELECT @o

正则表达式是否会在每次出现时循环?

如果有人有更好的解决方案,请务必通知我。

任何帮助都将不胜感激。

3 个答案:

答案 0 :(得分:1)

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

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

转义括号在这里很重要。

  

。匹配每个角色。

     

*匹配n出现。

     

\转义以下字符

     

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

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

答案 1 :(得分:0)

您需要转义()

alert\(.*?\);

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

另请注意,您可以一次性完成。

重要提示:如果alert(...)内的表达式中有括号,则无法使用此功能。这应该由更棘手的正则表达式处理。

答案 2 :(得分:0)

你必须逃避一些角色才能实现这一目标。

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

最后,为了测试你的正则表达式,这是一个很好的正则表达式测试器:https://regex101.com/#javascript

这样的事情对你有用:

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

经过this CodePen测试。