收录日期:2020/10/23 11:31:30 时间:2010-09-07 01:42:05 标签:javascript,regex,parsing,url-parsing

I'm trying to search plain old strings for urls that begin with http, but all the regex I find doesn't seem to work in javascript nor can I seem to find an example of this in javascript.

This is the one I'm trying to use from here and here:

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

But when I try to run it, I get "Unexpected token |" errors.

Ok, a comment seems to be not enough, hard to find full answer. I rewrite whole proper regexp: (tested, it works good)

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

The i on the end means 'ignore case', so it is necessary for this regexp.

You're using / as your regex delimiter, and are also using / within the regex (before www), so the regex actually terminates after the first / before www. Change it to:

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