[PHP]正則表達式判斷網址

來源:https://segmentfault.com/q/1010000000584340/a-1020000000584362正則表達式

 

Markdown 的做者之一寫的正則表達式(原文在這segmentfault

(?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`!()\[\]{};:'".,<>?«»「」‘’]))

測試代碼:測試

// 注意,這裏把上面的正則表達式中的單引號用反斜槓轉義了,否則無法放在字符串裏
$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`!()\[\]{};:\'".,<>?«»「」‘’]))@';

var_dump( preg_match($regex, 'http://segmentfault.com/q/1010000000584340') );  //true
相關文章
相關標籤/搜索