代码之家  ›  专栏  ›  技术社区  ›  GONeale

仅在不匹配的地方使用regex替换括号内的值

  •  1
  • GONeale  · 技术社区  · 16 年前

    对于任何与单词“field”不匹配的字符串,如何替换括号内的数字?所以“someThingelse”和“someThingmore”中的数字可以替换为新值,但术语“field”右侧的括号内的任何值都不会被触及。注意,单词“field”将始终保持不变,因此它可以在regex中作为魔术字符串引用。

    Field[50].SomethingElse[30]
    Field[50].SomethingMore[30]
    

    谢谢。 使用javascript。

    4 回复  |  直到 11 年前
        1
  •  1
  •   Eldar Djafarov    16 年前

    尝试

    str.replace(/(Field\[[^\]]*\]\.[^\[]*)\[(.*)\]/g, "$1["+value+"]");
    
        2
  •  2
  •   Alan Moore Chris Ballance    16 年前
    str.replace(/\b((?!Field\[)\w+)\[\d+\]/g, '$1[' + repl + ']');
    
        3
  •  1
  •   M4N    11 年前

    str.replace(/(?<!Field)\[([\d]*)\]]/g, '$1['+newnumber+']');

    希望这有帮助

        4
  •  0
  •   Joshua    16 年前

    你可以使用“eval”和字符串操作,但是如果你必须这样做,你就错了。

    将数字“30”存储到变量中可以根据需要对其进行操作,然后只需访问“somethingelse”和“somethingmore”,如下所示:

    var n = 30;
    // conditional logic;
    
    Field[50].SomethingElse[n]
    Field[50].SomethingMore[n]
    

    当做, 约书亚