正则表达式Javascript - 双垂直条

时间:2018-02-05 00:52:18

标签: javascript regex logic

我正在尝试更换任何" ||"在"∨"的字符串中使用以下代码:

var s = f.replace(new RegExp("||", "g"), "∨");

然而,当f =" A→(A→A)"

时会发生以下情况
f = "∨A∨→∨(∨A∨→∨A∨)∨

我试图以尽可能多的方式逃避,但我认为这是因为双垂直条形结构导致了我的问题。

2 个答案:

答案 0 :(得分:1)

要将所有||替换为v,请尝试以下操作:

var s = f.replace(/\|\|/g, "∨");

给定输入: f = "A||→(A||→A)";

将输出: A∨→(A∨→A)

答案 1 :(得分:0)

|代表OR,因此您的正则表达式||匹配空字符串'' (''|''|'')。您应该使用\|\|代替。

|A|→|(|A|→|A|)|
^ ^ ^ ^ ^ ^ ^ ^ <= matches empty string '' between chars
∨A∨→∨(∨A∨→∨A∨)∨

&#13;
&#13;
var wrong = 'A→(A→A)'.replace(new RegExp(/||/, "g"), 'v')
var right = 'A||A||A'.replace(new RegExp(/\|\|/, "g"), 'v')

console.log(right, wrong)
&#13;
&#13;
&#13;