2010-05-31 173 views
3

这块正则表达式(?<=href\=")[^]+?(?=#_)应该匹配href值中的所有内容,除了散列值和href url后面的内容。 它似乎在正则表达式调试器/测试仪,如http://gskinner.com/RegExr/ 下工作正常,但在JavaScript中它似乎产生语法错误。如果我从(?<=)中删除<它可以工作,但这不是我期待的正面预测。JavaScript的正则表达式 - 积极向前看 - 给我的语法错误

我拉我的头发脱落,像往常一样,由于正则表达式笑

请帮

回答

3

Lookbehinds没有支持前面已经提到。

我不知道哪个功能,您使用您正则表达式,但如果你使用match(),只需添加一个捕获组:

href="(.+?)(?=#)

它给你,例如:

var str = '<a href="foo#bar"></a>'; 
var matches = str.match(/href="(.+?)(?=#)/); 

// matches[0] = href="foo 
// matches[1] = foo   // <-- this is what you want 

附加信息:

[^]表示匹配而不是的所有字符。但班上没有人物。所以它匹配任何字符这正是点.正在做什么。

1

您正则表达式中RegExr工作的原因是因为RegExr是书面的ActionScript Flash应用程序,而不是JavaScript的。虽然AS宣称自己与JS一样符合EcmaScript标准,但它实际上更强大。它的正则表达式引擎由PCRE库提供支持,因此它具有与PHP相同的功能。

要得到一个什么样的JavaScript正则表达式可以做的,使用实际上是由JavaScript供电,像this one测试者更准确的图片。

相关问题