我的文字是:有特殊字符的Javascript匹配的网址格式允许
<A HREF="http://ad.doubleclick.net/get/N97638.2534621.INTERSTITIAL/B7532631099.4;sz=1x1;ord=[timestamp]?">
我使用正则表达式如下匹配网址:
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));
//OUTPUT
"http://ad.doubleclick.net/get/N97638.2534621.INTERSTITIAL/B7532631099.4;sz=1x1;ord=[timemacro"
而我想:
"http://ad.doubleclick.net/get/N97638.2534621.INTERSTITIAL/B7532631099.4;sz=1x1;ord=[timemacro]?"
这可能会做:'/的 techfoobar
@techfoobar URL可能并不总是包含在锚标记内 – jerrymouse
Ahh ..所以你想抓到url pa tterns,而不仅仅是href属性值..好的。 – techfoobar