我需要能够删除字符串中的条件,这里是:
(("${Operation}" == "Fixed") && ("-" == "-"))
我希望能够将"${Operation}" == "Fixed"
替换为""
或其中包含$ {}的任何内容。换句话说,如果条件左侧有$ {},我想完全摆脱这个条件。
答案 0 :(得分:1)
这将匹配
\([^(]*\${.*?}[^)]*\)
答案 1 :(得分:1)
通常,正则表达式不是正确的方法。有许多案例都是有效的JavaScript语法,但这些案例并不适合正则表达式。但是,这是一种方法:
var code = '(("${Operation}" == "Fixed") && (thing1 == thing2))';
code = code.replace(/"[^"]*\$\{[^}]*\}[^"]*"\s*==\s*"[^"]*"/, 'true');
只处理双引号。如果需要处理两种类型的引号,表达式将更复杂。如果您需要处理两种类型的引号和,那么您的字符串可能包含引号,那么正则表达式确实无效。
如果您能想出一种不同的方法来解决这个问题,那么您应该这样做。例如 - 字符串来自哪里?你能以不同的格式获取数据吗?
此外,听起来您正在设置此字符串以调用eval
。如果它包含任何类型的用户输入,这是一个坏主意。
答案 2 :(得分:0)
使用此正则表达式/^\(?[^)&]*?\${.*\)/
我成功匹配了两个第一行但不是另外两个。这是你在找什么?
((“$ {Operation}”==“Fixed”)&&(“ - ”==“ - ”))
(“$ {Operation}”==“Fixed”))
((“$ Operation”==“Fixed”)&&(“ - ”==“ - ”))
((“ - ”==“ - ”)&&(“$ {Operation}”==“Fixed”))
答案 3 :(得分:0)
有趣的是,我想出了/\(("?\${.*}"?[^)]*)\)/g
:
'(("${Operation}" == "Fixed") && ("-" == "-"))'.replace(/\(("?\${.*}"?[^)]*)\)/g, '("")')
这可能有太多*
,但互联网编码问题似乎总是有点大开。
注意:这就像在特殊的RegExp角色中进行测试一样,非常感谢!
唯一能保持我写的正则表达式下沉的船只是[^)]*
任何事情都不是关闭)