为什么这不是一个有效的正则表达式?

时间:2012-10-12 03:50:10

标签: javascript regex

我正在尝试使用regex.exec()从URL检索字符串的一部分,但由于某种原因我收到错误。希望你们能发现它。

我想从字符串中获取此信息 - > http://anotherdomain.com/image.jpg

var haystack = 'http://domain.com/?src=http://anotherdomain.com/image.jpg&h=300';
var needle = /(?<=src=).+(?=&h)/;
var results = needle.exec(haystack);

因此在加载时我收到此错误 - &gt; SyntaxError: invalid quantifier

所以我尝试在针头附近添加单引号但是没有用。添加引号会让我needle.exec不是函数。

2 个答案:

答案 0 :(得分:4)

Javascript正则表达式不支持lookbehind。

你可能会接受:

var haystack = 'http://domain.com/?src=http://anotherdomain.com/image.jpg&h=300';
var needle = /src=(.+)(?=&h)/;
var results = needle.exec(haystack);

// results is now ["src=http://anotherdomain.com/image.jpg", "http://anotherdomain.com/image.jpg"], so haystack[1] is what you want.

答案 1 :(得分:0)

为什么不使用捕获parens而不是lookbehind:

results = haystack.match(/\?src=([^&]*)&/);

if (results) {
    result = results[1];
}