Выражение регулярного выражения, соответствующее первому URL после пробела

0

Я хочу сопоставить First url, а затем пробел с использованием выражения regex при вводе в поле ввода. Например: если я набираю www.google.com, его следует сопоставлять только после пробела, за которым следует URL-адрес, например www.google.com<SPACE>

Код

$(".site").keyup(function()
{
   var site=$(this).val();
   var exp = /^http(s?):\/\/(\w+:{0,1}\w*)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/;
   var find = site.match(exp);

   var url = find? find[0] : null;

        if (url === null){
        var exp = /[-\w]+(\.[a-z]{2,})+(\S+)?(\/|\/[\w#!:.?+=&%@!\-\/])?/g;
        var find = site.match(exp);
        url = find? 'http://'+find[0] : null;
      }
});

скрипка

Пожалуйста, помогите, спасибо заранее

  • 0
    пожалуйста, сделайте скрипку
  • 0
    @aelor Вот скрипка jsfiddle.net/kLL4E/1
Показать ещё 1 комментарий
Теги:
pattern-matching
url

2 ответа

0
Лучший ответ

С взглядом:

var exp = /[-\w]+(\.[a-z]{2,})+(\S+)?(\/|\/[\w#!:.?+=&%@!\-\/])?(?= )/g;

Я только добавил это "(? =)" К вашему регулярному выражению.

скрипка

  • 0
    Спасибо, как сопоставить URL в конце с пробелом или & nbsp; пожалуйста помоги
  • 0
    Если вы хотите добавить пробел или использовать & nbsp: ((? =) | (? = \ & Nbsp)) См. Fiddle : jsfiddle.net/kLL4E/5
1

вы должны использовать лучшее регулярное выражение для правильного соответствия части запроса и фрагмента вашего URL-адреса. Посмотрите здесь (что является лучшим регулярным выражением, чтобы проверить, является ли строка допустимым URL?) Для правильного IRI/URI-структурированного теста Regex.

Но вот рудиментарная версия:

var regex = /[-\w]+(\.[a-z]{2,})+(\/?)([^\s]+)/g;
var text = 'test google.com/?q=foo basdasd www.url.com/test?q=asdasd#cheese something else';
console.log(text.match(regex));

Ожидаемый результат:

["google.com/?q=foo", "www.url.com/test?q=asdasd#cheese"]

Если вы действительно хотите проверить URL-адреса, убедитесь, что вы включили схему, порт, имя пользователя и пароль, чтобы быть в безопасности.

В контексте того, чего вы пытаетесь достичь, вы должны действительно задержать некоторую задержку, чтобы не влиять на производительность браузера. Тесты Regex могут быть дорогими при использовании сложных правил, особенно при запуске одного и того же правила при каждом вводе нового символа. Просто подумайте о том, чего вы пытаетесь достичь, и есть ли там лучшее решение, чтобы добраться туда.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню