代码之家  ›  专栏  ›  技术社区  ›  The KNVB

如何使用正则表达式在指定的字母表(即a、D、F、R)和数字之间插入括号?

  •  1
  • The KNVB  · 技术社区  · 3 年前

    如何使用正则表达式在指定的字母表(即a、D、F、R)和数字之间插入括号?

    输入:

    A1
    F42
    D3
    R6
    

    预期输出:

    (A)1
    (F)42
    (D)3
    (R)6
    

    我所尝试的:

    let inputString="f42"
    let expPattern=/[ADFR]\d{1,3}/ig;
     console.log(inputString.replace(expPattern,"(`$0`)"));
    

    它只返回“$0”。

    如何进行更换?

    1 回复  |  直到 3 年前
        1
  •  3
  •   blhsing    3 年前

    您应该将字母表和数字放在单独的捕获组中,以便在替换字符串中引用它们:

    let inputString="F42"
    let expPattern=/([ADFR])(\d{1,3})/ig;
    console.log(inputString.replace(expPattern,"($1)$2"));
        2
  •  2
  •   The fourth bird    3 年前

    如果你想在替换中使用完全匹配,你可以使用积极的前瞻性 (?=\d{1,3}\b) 向右断言1-3位数字。

    为了防止部分匹配,可以使用单词边界 \b

    在替换中,使用表示为的完全匹配 $&

    请参阅 regex demo 以及所有的替代品。

    let inputString="F42"
    let expPattern=/\b[ADFR](?=\d{1,3}\b)/ig;
    console.log(inputString.replace(expPattern,"($&)"));