Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/366.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 要匹配URL的正则表达式_Javascript_Regex - Fatal编程技术网

Javascript 要匹配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

我使用以下正则表达式来检测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\.[-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