正则表达式失败

时间:2010-04-19 08:27:33

标签: javascript regex

有人帮忙吗?当我运行这个时,我得到“无效的量词?< = href =”

var aHrefMatch = new RegExp("(?<=href\=")[^]+?(?=")"); 
var matchedLink = mystring.match(aHrefMatch);

但我知道正则表达式是有效的。

有什么想法吗?

4 个答案:

答案 0 :(得分:9)

Javascript不支持lookbehind断言。它只支持前瞻性的。产生错误是因为它假设了?是0或1的量词,但在子模式的开头没有要量化的元素(由(左括号开始)

此外,您的字符串似乎缺少一些反斜杠,因为双引号不会在那里转义。它应该产生语法错误。

也许这段代码可以帮助你做你想要实现的目标:

var match = mystring.match(/href=\"([^\"]*)\"/);
var matchedLink = match[1];

答案 1 :(得分:1)

您需要使用标准反斜杠转义正则表达式中的双引号:

var aHrefMatch = new RegExp("(?<=href\=\")[^]+?(?=\")");

...或者您可以使用单引号来指定字符串:

var aHrefMatch = new RegExp('(?<=href\=")[^]+?(?=")');

答案 2 :(得分:1)

您是不是要在=符号之后和向前看之后逃避引用?=。 此外,如果你只是想匹配href =“some text”,那么你真的不需要看后面并展望未来的构造。以下应该做得很好

href=\"[^"]+\"

如果你想要匹配别的东西,请详细说明。感谢

答案 3 :(得分:0)

真的不知道你想做什么。但是如果你想获得链接。

var aHrefMatch = new RegExp(/(href\=\")([\w\-\/]+)?(\")/); 
var matchedLink = mystring.match(aHrefMatch)[2];