2010-09-07 7 views
0

Я пытаюсь найти простые старые строки для URL-адресов, которые начинаются с http, но все регулярное выражение, которое я нахожу, похоже, не работает в javascript, и я не могу найти пример этого в javascript ,javascript plain text url parsing

Это один я пытаюсь использовать с here и here:

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

Но когда я пытаюсь запустить его, я получаю «Неожиданный маркер |» ошибки.

ответ

1

Хорошо, комментарий кажется недостаточным, трудно найти полный ответ. Я переписывать всю надлежащую регулярному_выражению: (проверено, работает хорошо)

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

i на конце означает «игнорировать регистр», так что необходимо для этого регулярного выражения.

+1

Может быть полезно отметить, что добавление | перед тем, как www сделает www опционным. – AdamB

+0

Это не удастся по URL с круглыми скобками –

0

Вы используете / как ваш разделитель регулярных выражений, а также используете / в регулярном выражении (до www), поэтому регулярное выражение фактически заканчивается после первого/перед www. Измените его на:

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

не только там, то есть некоторые символы '/' позже тоже – pepkin88

+0

забыли упомянуть, это регулярное выражение нечувствительно к регистру, поэтому вы скорее напишете это: 'var test =/\ b (? :(?: https? | FTP | файл): \/\/WWW \ | FTP \) [- A-Z0-9 + & @ # \ /% = ~ _ | $:,?!.].. * [A-Z0-9 + & @ # \ /% = ~ _ | $]/i; ' – pepkin88