Я пытаюсь проверить, содержит ли вход URL-адрес, когда пользователь вводит содержимое вручную, вставляет ссылку или их комбинацию.Я хотел бы получить содержимое URL-адреса (аналогично Facebook) при первом обнаружении.
Пока у меня есть следующее:
$('#message').keyup(function() {
var exp = /(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/;
if((this.value.match(exp))) {
var match = exp.exec(this.value);
alert(match[0]);
$(this).unbind();
return;
}
});
$("#message").bind('paste', function(e) { $("#message").trigger('keyup'); });
Это работает правильно при вставке ссылки, когда что-то набирается, а затем вставляется, , но не при вводе URL-адреса вручную .
Если перейти к типу "http://www.stackoverflow.com",, совпадение срабатывает после" http://w".
Каков более разумный способ написать это поведение?
РЕДАКТИРОВАТЬ : Просто подумал о чем-то - как насчет проверки регулярного выражения против последней вещи, введенной пользователем, с пробелом до и послеэто?
Спасибо,