正则表达式匹配URL

时间:2012-01-17 16:18:57

标签: javascript regex

我有以下正则表达式来检测URL:

/(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig

但是,它不会检测www.google.catlk.tc/ApSE等网址。是否有正则表达式,我可以检测到这些URL?我正在使用javascript。

2 个答案:

答案 0 :(得分:3)

修改

试试这个:

((\b(https?|ftp|file):\/\/)?[-A-Z0-9+&@#\/%?=~_|!:,.;]+\.[-A-Z0-9+&@#\/%=~_|]+)

它使方案可选,以支持您在示例中显示的两种情况。

网址的IETF RFC-2396提供了以下正则表达式,用于解析网址

^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?

将捕获组映射到以下组件:

scheme    = $2
authority = $4
path      = $5
query     = $7
fragment  = $9

请注意,您提供的示例www.google.catlk.tc/ApSE不是“有效”网址,但我相信无论如何它们都会与正则表达式相匹配。

答案 1 :(得分:0)

此表达式可以满足您的需求。它不是此正则表达式匹配的有效URL,但它符合您的要求:

/(\b(https?|ftp|file):\/\/|\bwww\.[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])|([\S]+\.([a-z]{2,})+?\/[\S]+)/gi