簡潔的格式
(?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`!()\[\]{};:'".,<>?«»“”‘’]))
複製程式碼
解釋它是怎麼工作的
(?xi)
\b
( # 獲取 1: 匹配整個URL
#######################################################################################
(?:
[a-z][\w-]+: # URL協議和冒號
(?:
/{1,3} # 1-3 斜槓
| # 或者
[a-z0-9%] # 單個字母 或者 數字 或者 百分號
# (不匹配 "URI::Escape")
) # https?://
| # 或者
www\d{0,3}[.] # "www.", "www1.", "www2." … "www999."
| # 或者
[a-z0-9.\-]+[.][a-z]{2,4}/ # 域名後面跟一個斜槓
)
#######################################################################################
(?: # 一個或多個:
[^\s()<>]+ # Run of non-space, non-()<>
| # 或者
\(([^\s()<>]+|(\([^\s()<>]+\)))*\) # 最多2個級別括號
)+
#######################################################################################
(?: # 結束:
\(([^\s()<>]+|(\([^\s()<>]+\)))*\) # 最多2個級別括號
| # 或者
[^\s`!()\[\]{};:'".,<>?«»“”‘’] # 不是空白 或者 不是標點符號字元
)
#######################################################################################
)
複製程式碼