javascript纯文本url解析
我试图搜索以http开头的URL的普通旧字符串,但我找到的所有正则表达式似乎都不能在javascript中工作,也不能在javascript中找到这样的示例 这是我试图从中使用的,并且:javascript纯文本url解析,javascript,regex,parsing,url-parsing,Javascript,Regex,Parsing,Url Parsing,我试图搜索以http开头的URL的普通旧字符串,但我找到的所有正则表达式似乎都不能在javascript中工作,也不能在javascript中找到这样的示例 这是我试图从中使用的,并且: 但是,当我尝试运行它时,会出现“意外令牌|”错误。您正在使用/作为regex分隔符,并且还在regex中使用/(www之前),因此regex实际上在第一个/www之前终止。将其更改为: var test = /\b(?:(?:https?|ftp|file):\/\/www\.|ftp\.)[-A-Z0-9+&
但是,当我尝试运行它时,会出现“意外令牌|”错误。您正在使用
/
作为regex分隔符,并且还在regex中使用/
(www之前),因此regex实际上在第一个/www之前终止。将其更改为:
var test = /\b(?:(?:https?|ftp|file):\/\/www\.|ftp\.)[-A-Z0-9+&@#/%=~_|$?!:,.]*[A-Z0-9+&@#/%=~_|$]/;
^^^^ escape here
好吧,一个评论似乎是不够的,很难找到完整的答案。我重写了整个适当的regexp:(经过测试,效果良好)
最后的
i
表示“忽略大小写”,所以这个regexp是必需的。忘了提到,这个regexp是不区分大小写的,所以你更愿意写这个:var test=/\b(?(?:https?;ftp | file):\/\/www\.\ftp\。[-A-Z0-9+&@\/%=u124$!,.]*[A-Z0-9+&-/%=u124$]
可能有助于注意,在www之前添加一个|将使www成为可选的。这将在带有括号的url上失败
var test = /\b(?:(?:https?|ftp|file):\/\/www\.|ftp\.)[-A-Z0-9+&@#/%=~_|$?!:,.]*[A-Z0-9+&@#/%=~_|$]/;
^^^^ escape here
var test = /\b(?:(?:https?|ftp|file):\/\/www\.|ftp\.)[-A-Z0-9+&@#\/%=~_|$?!:,.]*[A-Z0-9+&@#\/%=~_|$]/i;