Javascript看后面

时间:2012-09-27 19:29:01

标签: javascript regex

我正试图在Javascript中模仿背后,

我想匹配字符串“object.all”而不是“object.call”。我试过了:

new RegExp('(?!(\\.))all')

但是这两个例子都是匹配的,我想要的是在后面测试.(点)是否在all后面,有人可以解释我的正则表达式有什么问题吗?

提前致谢


这个很好:

'object.all'.replace(new RegExp('(?!(\\.))all'), 'foo') 
// => object.foo

对于这个我希望结果是“object.call”:

'object.call'.replace(new RegExp('(?!(\\.))all'), 'foo')
// => object.cfoo

2 个答案:

答案 0 :(得分:0)

问题在于它仍然是一个先行者。因此,它会检查点是否与“a”位于同一位置,而不是位于后面的位置。

答案 1 :(得分:0)

虽然这似乎很复杂,但这将完成工作:

function replaceAll(string, replacement) {
  var output = string.replace(/(\.)?all/g, function($0, $1) {
    return $1 ? $1 + replacement : $0;
  });
  return output;
}

var test1 = replaceAll("object.all", "foo");
var test2 = replaceAll("object.call", "foo");

console.log(test1); // object.foo
console.log(test2); // object.call

我在今年早些时候的一些代码中使用了@ m.buettner在评论中链接的文章(Mimicking Lookbehind in JavaScript)。