这块正则表达式(?<=href\=")[^]+?(?=#_)
应该匹配href值中的所有内容,除了散列值和href url后面的内容。 它似乎在正则表达式调试器/测试仪,如http://gskinner.com/RegExr/ 下工作正常,但在JavaScript中它似乎产生语法错误。如果我从(?<=)
中删除<
它可以工作,但这不是我期待的正面预测。JavaScript的正则表达式 - 积极向前看 - 给我的语法错误
我拉我的头发脱落,像往常一样,由于正则表达式笑
请帮
这块正则表达式(?<=href\=")[^]+?(?=#_)
应该匹配href值中的所有内容,除了散列值和href url后面的内容。 它似乎在正则表达式调试器/测试仪,如http://gskinner.com/RegExr/ 下工作正常,但在JavaScript中它似乎产生语法错误。如果我从(?<=)
中删除<
它可以工作,但这不是我期待的正面预测。JavaScript的正则表达式 - 积极向前看 - 给我的语法错误
我拉我的头发脱落,像往常一样,由于正则表达式笑
请帮
(?<=...)
和(?<!...)
是lookbehinds,而不是向前看符号。 Javascript的正则表达式引擎不支持Lookbehinds。
资源:
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
附加信息:
[^]
表示匹配而不是的所有字符。但班上没有人物。所以它匹配任何字符这正是点.
正在做什么。
您正则表达式中RegExr工作的原因是因为RegExr是书面的ActionScript Flash应用程序,而不是JavaScript的。虽然AS宣称自己与JS一样符合EcmaScript标准,但它实际上更强大。它的正则表达式引擎由PCRE库提供支持,因此它具有与PHP相同的功能。
要得到一个什么样的JavaScript正则表达式可以做的,使用实际上是由JavaScript供电,像this one测试者更准确的图片。