【问题标题】:Regex & Javascript - Double Vertical Bar正则表达式和 Javascript - 双竖条
【发布时间】:2018-02-05 00:52:17
【问题描述】:

我正在尝试替换任何“||”在带有“∨”的字符串中,代码如下:

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

但是,当 f = "A→(A→A)" 时会发生以下情况

f = "∨A∨→∨(∨A∨→∨A∨)∨

我已经尝试了尽可能多的方式进行转义,但我认为这是因为它是双竖线结构导致了我的问题。

【问题讨论】:

  • 如果您使用正则表达式构造函数的字符串文字形式,您将需要这个 -> .replace(new RegExp("\\|\\|", "gu"), "v") 基本上 \| 是转义 |\` the double is required as ` 需要在内部转义字符串。或者使用@linasmnew 显示的非字符串版本。

标签: javascript regex logic


【解决方案1】:

要将所有|| 替换为v,试试这个:

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

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

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

【讨论】:

    【解决方案2】:

    | 代表OR,所以你的正则表达式|| 匹配空字符串''(''|''|'')。你应该改用\|\|

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

    var wrong = 'A→(A→A)'.replace(new RegExp(/||/, "g"), 'v')
    var right = 'A||A||A'.replace(new RegExp(/\|\|/, "g"), 'v')
    
    console.log(right, wrong)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-23
      • 1970-01-01
      相关资源
      最近更新 更多