有人帮忙吗?当我运行这个时,我得到“无效的量词?< = href =”
var aHrefMatch = new RegExp("(?<=href\=")[^]+?(?=")");
var matchedLink = mystring.match(aHrefMatch);
但我知道正则表达式是有效的。
有什么想法吗?
答案 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];