Pergunta

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.

Foi útil?

Solução

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.

Outras dicas

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
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top