Javascript 匹配条件正则表达式

Javascript 匹配条件正则表达式,javascript,regex,Javascript,Regex,我需要能够剥离字符串中的条件,如下所示: (("${Operation}" == "Fixed") && ("-" == "-")) 我希望能够将“${Operation}”==“Fixed”替换为”或任何介于()之间的包含${}的内容。换句话说,如果在条件的左侧有${},我想完全消除该条件。这将匹配它 \([^(]*\${.*?}[^)]*\) 一般来说,正则表达式在这里不是正确的方法。有很多情况下都是有效的JavaScript语法,但这不适合正则表达式。但是,有一种方法可

我需要能够剥离字符串中的条件,如下所示:

(("${Operation}" == "Fixed") && ("-" == "-"))
我希望能够将
“${Operation}”==“Fixed”
替换为
或任何介于()之间的包含${}的内容。换句话说,如果在条件的左侧有${},我想完全消除该条件。

这将匹配它

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

一般来说,正则表达式在这里不是正确的方法。有很多情况下都是有效的JavaScript语法,但这不适合正则表达式。但是,有一种方法可以做到:

var code = '(("${Operation}" == "Fixed") && (thing1 == thing2))';
code = code.replace(/"[^"]*\$\{[^}]*\}[^"]*"\s*==\s*"[^"]*"/, 'true');
它只处理双引号。如果需要处理这两种类型的引号,则表达式将更加复杂。如果您需要同时处理引号这两种类型,那么字符串可能包含引号,那么正则表达式实际上是行不通的

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

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

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

((“${Operation}”==“Fixed”)&&(“-”==“-”))

(“${Operation}”==“Fixed”))

((“$Operation”==“Fixed”)&&(“-”=“-”))

(((“-”=“-”&(${Operation}”==“Fixed”))


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

'(("${Operation}" == "Fixed") && ("-" == "-"))'.replace(/\(("?\${.*}"?[^)]*)\)/g, '("")')
这可能有太多的
*
,但无论如何,互联网编码问题似乎总是有点大

注意:这就像是一个特殊RegExp字符的测试,很有趣,谢谢


我写的正则表达式的唯一保存方法是
[^]*
任何不是结束的

这是一个非常灵活的问题描述。我能够更改传递回的数据,我的想法与您的想法相同。我正在设置字符串以用于
(新函数(此处为字符串)()
事实上。我可能不得不在客户端构建表达式,这是我最初做的,令人遗憾的是,性能受到了影响……但感谢你的回答,这是一个怪物,regexI的想法更像是返回某种JSON数据结构。但是,不管怎样。我采用了不同的方法。我只是返回了我需要的数据n另一种格式。不过谢谢你的帮助!