我有以下正则表达式来检测URL:
/(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig
但是,它不会检测www.google.ca
和tlk.tc/ApSE
等网址。是否有正则表达式,我可以检测到这些URL?我正在使用javascript。
答案 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.ca
和tlk.tc/ApSE
不是“有效”网址,但我相信无论如何它们都会与正则表达式相匹配。
答案 1 :(得分:0)
此表达式可以满足您的需求。它不是此正则表达式匹配的有效URL,但它符合您的要求:
/(\b(https?|ftp|file):\/\/|\bwww\.[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])|([\S]+\.([a-z]{2,})+?\/[\S]+)/gi