允许使用特殊字符的Javascript匹配URL模式

允许使用特殊字符的Javascript匹配URL模式,javascript,regex,Javascript,Regex,我的文字是: <A HREF="http://ad.doubleclick.net/get/N97638.2534621.INTERSTITIAL/B7532631099.4;sz=1x1;ord=[timestamp]?"> 鉴于我想要: "http://ad.doubleclick.net/get/N97638.2534621.INTERSTITIAL/B7532631099.4;sz=1x1;ord=[timemacro]?" 您可以使用以下代码: var uri_patt

我的文字是:

<A HREF="http://ad.doubleclick.net/get/N97638.2534621.INTERSTITIAL/B7532631099.4;sz=1x1;ord=[timestamp]?">
鉴于我想要:

"http://ad.doubleclick.net/get/N97638.2534621.INTERSTITIAL/B7532631099.4;sz=1x1;ord=[timemacro]?"

您可以使用以下代码:

var uri_pattern = /\b((?:[a-z][\w-]+:(?:\/{1,3}|[a-z0-9%])|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}\/)(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[{};:'".,<>?«»“”‘’]|\]|\?))/ig

var text = '<A HREF="http://ad.doubleclick.net/get/N97638.2534621.INTERSTITIAL/B7532631099.4;sz=1x1;ord=[timemacro]?">';

console.log(text.match(uri_pattern));
(a)a-z[[a-z[[a-a-z[[[w-[[w-[[[w-[[[w-]10::::/{1,3}[a-z0-9-9-z0-9%[a-z[a-a-z[a-z[a-z[a-a-z[a-z[[a-z[[[a-z[[a-z[[a-z[[[[[[[w-[w-[w-[w-[[w-[w-[[[w-[[w-[[[w-]]]]]]的[[[[[[[[w-[5-[5-][:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::!()\[{};:'”,«»“']\]\\?)/ig var text=''; log(text.match(uri_模式));
这可能会做到:
/@techfoobar URL可能并不总是包含在锚定标记中。啊..所以你想捕获URL模式,而不仅仅是href属性值..好的。是的..URL有点脏,因为它们可能包含尾部特殊字符..行了!我看到你删除了
\]
并添加了
\\]\?
。你能简单介绍一下吗y解释它?是的。[和?在正则表达式中有特殊含义。如果您想让这些字符退出其操作,必须使用转义字符,即\。在[]内不使用]或\b,它将具有其他含义。有关更多详细信息,请参阅
"http://ad.doubleclick.net/get/N97638.2534621.INTERSTITIAL/B7532631099.4;sz=1x1;ord=[timemacro]?"
var uri_pattern = /\b((?:[a-z][\w-]+:(?:\/{1,3}|[a-z0-9%])|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}\/)(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[{};:'".,<>?«»“”‘’]|\]|\?))/ig

var text = '<A HREF="http://ad.doubleclick.net/get/N97638.2534621.INTERSTITIAL/B7532631099.4;sz=1x1;ord=[timemacro]?">';

console.log(text.match(uri_pattern));