用于替换 JavaScript 模式的正则表达式

我有大量带有这样表达式的 html 文件:

eval('enterData.style.pixelTop=' + y);

我想消除 eval 表达式并只执行代码,换句话说,将其更改为:

enterData.style.pixelTop =  y;

谁能帮我解决这个问题。我正在努力寻找解决方案,但我只知道如何通过以下方式消除评估:

Regex: eval\('(.*)'\)
Replace: $1

我将 java 用于正则表达式。


BIG阳
浏览 139回答 2
2回答

holdtom

我对 Javascript 一无所知,但这就是我所看到的。您需要转义您的'角色并将它们放在不匹配的组中:?Regex: eval\(((?:\')(.*)(?:\').*)\) Replace: $1查看regex101以制作正则表达式的原型。

素胚勾勒不出你

我猜我们可以vars使用如下表达式分别捕获所需的两个:.+'(.+?)'\s+?[+\-*]+\s+([a-z]+).+我们当然可以简化这个表达式,但我不确定我们可能拥有的其他输入。爪哇import java.util.regex.Matcher;import java.util.regex.Pattern;final String regex = ".+'(.+?)'\\s+?[+\\-*]+\\s+([a-z]+).+";final String string = "eval('enterData.style.pixelTop=' + y);\n"     + "eval('enterData.style.pixelTop=' + x);";final String subst = "$1$2;";final Pattern pattern = Pattern.compile(regex, Pattern.MULTILINE);final Matcher matcher = pattern.matcher(string);// The substituted value will be contained in the result variablefinal String result = matcher.replaceAll(subst);System.out.println(result);测试const regex = /.+'(.+?)'\s+?[+\-*]+\s+([a-z]+).+/gm;const str = `eval('enterData.style.pixelTop=' + y);eval('enterData.style.pixelTop=' + x);`;const subst = `$1$2;`;// The substituted value will be contained in the result variableconst result = str.replace(regex, subst);console.log(result);演示正则表达式如果不需要此表达式,可以在regex101.com中对其进行修改/更改。正则表达式电路jex.im可视化正则表达式:
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java