2016-08-11 5 views
0

Я пытаюсь использовать регулярное выражение для замены изображений, видео и других URL-адресов, которые появляются в виде сообщений. Я думал, что все работает, но я столкнулся с проблемой с последним случаем замены URL-адресов, таких как www.google.com. Теперь он добавляет localhost: 3000 в начало этого URL-адреса. Я не лучший с регулярным выражением, но похоже, что регулярное выражение работает в HTML, так как href является www.google.com. Кто-нибудь может понять, где это происходит?Javascript Regex url replace

var image_url = /([a-z\-_0-9\/\:\.]*\.(jpg|jpeg|png|gif))/i; 
var message = text.replace(image_url,'<a href="$1" target="_blank"><img width=100px height=100px src="$1"/></a>') 
var video_url = /([a-z\-_0-9\/\:\.]*\.(mp4|webm|ogg))/i; 
message = message.replace(video_url,'<a href="$1" target="_blank"><video src="$1"></video></a>') 
var exp_url = /(?:^|[^"'])(https?:\/\/(?:www\.|(?!www))[^\s\.]+\.[^\s]{2,}|www\.[^\s]+\.[^\s]{2,})/gi; 
message = message.replace(exp_url,'<a href="$1" target="_blank">$1</a>') 
+0

Не совсем понимаю проблему ... можете ли вы разместить немного больше кода? В частности, какова ценность переменной «text»? –

+0

текст - это сообщение, отправленное пользователем, так что это может быть что угодно. Задача этой функции - проверить, является ли это изображением, видео или URL-адресом и заменить его правильным тегом. Первые два, кажется, работают правильно, но последний хочет добавить localhost: 3000 в начало его –

+0

Если проблема только в последней, можете ли вы уменьшить вопрос только до этого? Кажется ненужным мы смотрим на часть кода, который работает. – trincot

ответ

1

Был в состоянии понять это. Я не добавлял http: //, если его там не было.

var image_url = /([a-z\-_0-9\/\:\.]*\.(jpg|jpeg|png|gif))/i; 
var message = text.replace(image_url,'<a href="$1" target="_blank"><img width=100px height=100px src="$1"/></a>') 
var video_url = /([a-z\-_0-9\/\:\.]*\.(mp4|webm|ogg))/i; 
message = message.replace(video_url,'<a href="$1" target="_blank"><video src="$1"></video></a>') 
var http_reg = /(?:^|[^"'])(\b(https?|ftp):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/gim; 
message = message.replace(http_reg, '<a href="$1" target="_blank">$1</a>'); 
var www_reg = /(?:^|[^"'])(^|[^\/])(www\.[\S]+(\b|$))/gim; 
message = message.replace(www_reg, '$1<a href="http://$2" target="_blank">$2</a>');