我正在尝试构建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
正则表达式是否会在每次出现时循环?
如果有人有更好的解决方案,请务必通知我。
任何帮助都将不胜感激。
答案 0 :(得分:1)
你应该有这样的正则表达式:
/(alert\((.*)\);)/g
转义括号在这里很重要。
。匹配每个角色。
*匹配n出现。
\转义以下字符
g modifier:全局修饰符,不返回第一个匹配。
答案 1 :(得分:0)
您需要转义(
和)
:
alert\(.*?\);
演示:https://regex101.com/r/sL6fM6/1
另请注意,您可以一次性完成。
重要提示:如果alert(...)
内的表达式中有括号,则无法使用此功能。这应该由更棘手的正则表达式处理。
答案 2 :(得分:0)
你必须逃避一些角色才能实现这一目标。
转义正则表达式的括号。
并转义.replace()
方法的双引号。
最后,为了测试你的正则表达式,这是一个很好的正则表达式测试器:https://regex101.com/#javascript
这样的事情对你有用:
string.replace(/alert\([\'|\"](.*)[\'|\"]\)\;/gmi, "");
经过this CodePen测试。