匹配条件RegEx

时间:2012-06-11 21:10:58

标签: javascript regex

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

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

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

4 个答案:

答案 0 :(得分:1)

这将匹配

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

enter image description here

答案 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角色中进行测试一样,非常感谢!

唯一能保持我写的正则表达式下沉的船只是[^)]*任何事情都不是关闭)