首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >用于替换JavaScript模式的RegEx

用于替换JavaScript模式的RegEx
EN

Stack Overflow用户
提问于 2019-05-31 07:08:24
回答 2查看 51关注 0票数 -1

我有大量的html文件,它们的表达式是这样的:

代码语言:javascript
复制
eval('enterData.style.pixelTop=' + y);

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

代码语言:javascript
复制
enterData.style.pixelTop =  y;

有没有人能帮我。我正在试图找到一个解决方案,但我只知道如何用以下方法消除评估:

代码语言:javascript
复制
Regex: eval\('(.*)'\)
Replace: $1

我正在为正则表达式使用java。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-05-31 07:19:13

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

您需要使用:?'字符进行转义,并将它们放入不匹配的组中

代码语言:javascript
复制
Regex: eval\(((?:\')(.*)(?:\').*)\)
Replace: $1

查看用于构建正则表达式原型的regex101

票数 0
EN

Stack Overflow用户

发布于 2019-05-31 07:14:08

我猜我们可以使用下面这样的表达式分别捕获两个所需的vars

代码语言:javascript
复制
.+'(.+?)'\s+?[+\-*]+\s+([a-z]+).+

我们当然可以简化这个表达式,但我不确定我们可能有其他输入。

Java

代码语言:javascript
复制
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);

测试

代码语言:javascript
复制
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);

Demo

RegEx

如果这个表达式不需要,可以在regex101.com中修改/更改。

RegEx电路

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56386738

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档