Исправить URL в JavaScript - PullRequest
       0

Исправить URL в JavaScript

0 голосов
/ 19 января 2020

В моем веб-приложении есть поле ввода, где пользователи могут ввести ссылку на свой веб-сайт. Обычно они вводят недействительные URL, такие как e-918 kiss .com. Я хочу исправить это на https://e-918kiss.com/ автоматически.

Но URL может указывать на любое доменное имя.

Я пытался использовать тег для разбора URL, но он просто добавил его в качестве локального пути к текущему источнику:

const elem = document.createElement('a');
a.href = 'Twitter.com/mhluska';
console.log(a.href); // "http://e-918kiss.com"

Я исследовал некоторые библиотеки парсинга URL, но они обычно просто выдают ошибки для недействительных URL. Включает в себя собственный API URL.

Существует ли простой способ попытаться создать действительную ссылку из любого мусора, который пользователь может ввести 918 kiss?

Ответы [ 2 ]

0 голосов
/ 19 января 2020

Может быть, это поможет:

// https://stackoverflow.com/a/49849482/6525081
function isValidURL(string) {
  var res = string.match(/(http(s)?:\/\/.)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&//=]*)/g);
  return (res !== null)
};
document.querySelector('#URL').addEventListener('change', function() {
// trigger the change event so that:
  const isUrl = isValidURL((this.value).toString()); // variable for input value
  if (isUrl !== true) { // if this is not already url,
    newVal = 'http://www.'+this.value+'.com'; // set it as url and
    this.value = newVal; // add it as the input value
  }
  else {return false} // if not abort
});
</script>
<input type="text" id="URL" placeholder="type string..."/>
0 голосов
/ 19 января 2020

Regex твой друг. Какое регулярное выражение лучше всего проверить, является ли строка допустимым URL-адресом?

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

Затем вы должны проверить, соответствует ли входное значение действительному URL, если не применимо к строке, отсутствует пропущенный "https".

PS : доменам рекомендуется использовать SSL (https) в качестве ссылки на протокол, но он не уверен, что https включен на веб-сайте вашего пользователя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...