为什么我对正则表达式的正面看法无效?

时间:2016-03-03 18:00:17

标签: javascript regex

我有这个正则表达式,它会对 google 这个词做一个积极的看法,我已经使用网站 regex101.com 测试了它的有效性,这告诉我它的工作原理:

(?<=google).*

我在JavaScript中使用它是这样的:

var regex = new RegExp('(?<=google).*');
    someString = "google everything!";

console.log(someString.match(regex)[0]);

控制台日志应该返回everything!,后面有空格,基本上所有字符都不包括 google 之后的新行。

但是,控制台显示以下错误,但我无法弄清楚它发生的原因:

  

未捕获的SyntaxError:无效的正则表达式:/(?&lt; = google).*/:无效的组

我也使用它而不需要像这样创建一个新的RegExp对象,但是我得到了同样的错误:

var someString = "google everything!";
console.log(someString.match(/(?<=google).*/)[0]);

任何人都可以告诉我这段代码有什么问题吗?

2 个答案:

答案 0 :(得分:3)

您的正则表达式似乎不正确。我不确定你为什么<=。其次,你正在寻找第二个指数,而不是第一个。

var regex = new RegExp('google(.*)'),
    someString = "google everything!",
    matches = someString.match(regex); // ['google everything', ' everything!']
    console.log(matches[1]); //  everything! (with space before it)

答案 1 :(得分:2)

JS中没有后悔断言。

你可以通过在部件周围使用捕获组来解决这个问题 你想得到。

google(.*)

链接以尝试https://jsfiddle.net/vxcdk1kv/