javascript纯文本url解析

时间:2010-09-07 01:42:06

标签: javascript regex parsing url-parsing

我正在尝试搜索普通的旧字符串以获取以http开头的网址,但我找到的所有正则表达式似乎都不能在javascript中运行,我也无法在javascript中找到这样的示例。

这是我尝试使用的herehere

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

但是当我尝试运行它时,我得到“意外的令牌”错误。

2 个答案:

答案 0 :(得分:1)

好的,评论似乎还不够,很难找到完整答案。我重写了整个正确的正则表达式:(经过测试,效果很好)

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

结尾的i表示'忽略大小写',因此这个正则表达式是必要的。

答案 1 :(得分:0)

您正在使用/作为正则表达式分隔符,并且还在正则表达式中使用/(在www之前),因此正则表达式实际上在第一个/之前的www之后终止。将其更改为:

var test = /\b(?:(?:https?|ftp|file):\/\/www\.|ftp\.)[-A-Z0-9+&@#/%=~_|$?!:,.]*[A-Z0-9+&@#/%=~_|$]/;
                                     ^^^^ escape here