Javascript 要匹配URL的正则表达式
我使用以下正则表达式来检测URL:Javascript 要匹配URL的正则表达式,javascript,regex,Javascript,Regex,我使用以下正则表达式来检测URL: /(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig 但是,它不会检测诸如www.google.ca和tlk.tc/ApSE之类的URL。是否有可以检测这些URL的正则表达式?我正在使用javascript。此表达式满足您的要求。此regexp匹配的URL无效,但符合您的要求: /(\b(https?|ftp|file):\/\/|\bwww
/(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig
但是,它不会检测诸如
www.google.ca
和tlk.tc/ApSE
之类的URL。是否有可以检测这些URL的正则表达式?我正在使用javascript。此表达式满足您的要求。此regexp匹配的URL无效,但符合您的要求:
/(\b(https?|ftp|file):\/\/|\bwww\.[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])|([\S]+\.([a-z]{2,})+?\/[\S]+)/gi
编辑:
试试这个:
((\b(https?|ftp|file):\/\/)?[-A-Z0-9+&@#\/%?=~_|!:,.;]+\.[-A-Z0-9+&@#\/%=~_|]+)
它使方案成为可选方案,以支持示例中显示的两种情况
URL的IETF提供了以下用于解析URL的正则表达式:
将捕获组映射到以下组件:
scheme = $2
authority = $4
path = $5
query = $7
fragment = $9
请注意,您给出的示例,
www.google.ca
和tlk.tc/ApSE
不是“有效”的url,但我相信它们无论如何都会与正则表达式匹配。Try(google:javascript-url-regex)。重要的ftp连接也可以是安全的(ftps
,sftp
)和文件:
需要三个斜杠文件://
在windows上“www.google.ca”不是URL,而是FQDN。我在这里测试了这个表达式:它不适用于任何域o.0你说得对。。。我误读了IETF文件。此正则表达式用于解析URL,而不是查找URL。我会更新我的答案。在那个网站上试试^([^:/?\\\\\\\\\\\\\\\\\\\\\\\\\\\]+):)(/([^?\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\]**))(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\。为什么要这样做?它需要在域后加一个斜杠。您的要求是:www.google.ca和tlk.tc/ApSE
。www.或斜杠和至少一个字符缺失。您如何更改表达式,使其在检测到http://然后www紧接着出现时,即为一个url,而不是将它们分成两个?只需将第一个右括号(在| file
之后)移到www\
后面即可。所以整个正则表达式看起来是这样的:(\b(https?;ftp | file:\/\/\\/\\bwww\)[-A-Z0-9+&@\/%?=~!:,.;]*[-A-Z0-9+&/%=~+\.[\S]+\.([A-z]{2,}++/[\S]+.
,我的正则表达式对你有用吗?
scheme = $2
authority = $4
path = $5
query = $7
fragment = $9