Javascript RegExp替换。如何携带未知字符替换?

时间:2013-12-15 01:22:25

标签: javascript regex replace

我正在努力让我更深入地了解JS RegExp正在进行的项目。

因此,如果我检查包含foo的所有字符串,然后检查不是数字的字符,我会使用/foo[^0-9]/。但是,假设我想将匹配该模式的所有字符串更改为foobar,然后更改原始字符,我将如何处理?

str = foozip;
newStr = str.replace(/foo[^0-9]/, "foobar");
console.log(newStr);
//returns foobarip Note the lack of a z.

str = foozip;
newStr = str.replace(/foo/, "foobar");
console.log(newStr);
//this matches foo6zip, which is no good

我是否必须单独检查才能执行此操作?有没有办法从替换的一侧携带未知的角色到另一侧?

1 个答案:

答案 0 :(得分:4)

您有两种选择:

  1. 使用lookahead:

    str.replace(/foo(?=[^0-9])/, "foobar")
    
  2. 使用捕获组:

    str.replace(/foo([^0-9])/, "foobar$1")