0

我需要能够去除字符串中的条件,这里是:

(("${Operation}" == "Fixed") && ("-" == "-"))

我希望能够替换"${Operation}" == "Fixed"""() 或其中包含 ${} 的任何内容。换句话说,如果条件左侧有 ${},我想完全摆脱条件。

4

4 回答 4

1

这将匹配它

\([^(]*\${.*?}[^)]*\)

在此处输入图像描述

于 2012-06-11T21:14:30.727 回答
1

一般来说,正则表达式在这里不是正确的方法。有很多情况是有效的 JavaScript 语法,但不能很好地适应正则表达式。但是,这是一种方法:

var code = '(("${Operation}" == "Fixed") && (thing1 == thing2))';
code = code.replace(/"[^"]*\$\{[^}]*\}[^"]*"\s*==\s*"[^"]*"/, 'true');

那只处理双引号。如果你需要处理这两种类型的引号,表达式会更复杂。如果您需要处理这两种类型的引号并且您的字符串可能包含引号,那么正则表达式确实不起作用。

如果你能想出不同的方法来解决这个问题,那么你应该这样做。例如 - 字符串来自哪里?你能得到不同格式的数据吗?

此外,听起来您正在设置此字符串以调用eval. 如果它包含任何类型的用户输入,那是个坏主意。

于 2012-06-11T21:16:43.023 回答
0

使用这个正则表达式/^\(?[^)&]*?\${.*\)/,我成功匹配了前两行,但没有匹配其他两行。这是你想要的?

(("${Operation}" == "固定") && ("-" == "-"))

("${Operation}" == "固定"))

(("$Operation" == "固定") && ("-" == "-"))

(("-" == "-") && ("${Operation}" == "固定"))

于 2012-06-11T21:18:08.873 回答
0

有趣的是,我想出了/\(("?\${.*}"?[^)]*)\)/g

'(("${Operation}" == "Fixed") && ("-" == "-"))'.replace(/\(("?\${.*}"?[^)]*)\)/g, '("")')

这可能有太多了*,但无论如何互联网编码问题似乎总是有点开放。

注意:这就像对特殊 RegExp 字符的测试,很有趣,谢谢!

唯一能让我写的正则表达式沉没的东西就是[^)]*任何东西都不是结束)

于 2012-06-11T21:19:28.157 回答