为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

BIG阳 2022-12-28 10:01:50
我有大量带有这样表达式的 html 文件:eval('enterData.style.pixelTop=' + y);我想消除 eval 表达式并只执行代码,换句话说,将其更改为:enterData.style.pixelTop =  y;谁能帮我解决这个问题。我正在努力寻找解决方案,但我只知道如何通过以下方式消除评估:Regex: eval\('(.*)'\) Replace: $1我将 java 用于正则表达式。
查看完整描述

2 回答

?
holdtom

TA贡献1805条经验 获得超10个赞

我对 Javascript 一无所知,但这就是我所看到的。

您需要转义您的'角色并将它们放在不匹配的组中:?

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

查看regex101以制作正则表达式的原型。


查看完整回答
反对 回复 2022-12-28
?
素胚勾勒不出你

TA贡献1827条经验 获得超9个赞

我猜我们可以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 variable

final 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 variable

const result = str.replace(regex, subst);


console.log(result);

演示

正则表达式

如果不需要此表达式,可以在regex101.com中对其进行修改/更改。

正则表达式电路

jex.im可视化正则表达式:

//img1.sycdn.imooc.com//63aba3be00014bba14800185.jpg

查看完整回答
反对 回复 2022-12-28
  • 2 回答
  • 0 关注
  • 138 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号