我在推文中发现了一个链接,我当前的正则表达式无法解析,我似乎无法弄清楚如何让它工作(可能是由于我对正则表达式的无能)。
这是当前的代码:
preg_match_all('@((https?://)?([-\w]+\.[-\w\.]+)+\w(:\d+)?(/([-\w/_\.]*(\?\S+)?)?)*)@',$description, $matches, PREG_SET_ORDER);
并且不会解析的推文:
亚马逊:14天的贷款即将到来 Kindle“今年晚些时候”。 http://usat.me?128426
这是usat.me链接搞砸了。有什么想法吗?
答案 0 :(得分:1)
你可以在这里试试,它至少对我有用:
http://www.spaweditor.com/scripts/regex/
您可以尝试此RegEx:
(?i)\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`!()\[\]{};:'".,<>?«»“”‘’]))
答案 1 :(得分:1)
((https?://)?([-\w]+\.[-\w\.]+)+\w(:\d+)?((/)?([-\w/_\.]*(\?\S+)?)?)*)
试试吧。应该管用。修改/是(/)?意思是最后一个斜线应该是0或1次。