«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как я могу улучшить регулярное выражение для более эффективного сопоставления URL-адресов?

Как я могу улучшить регулярное выражение для более эффективного сопоставления URL-адресов?

Опубликовано 14 декабря 2024 г.
Просматривать:949

How Can I Improve My Regular Expression to Match URLs More Effectively?

Улучшенное регулярное выражение для сопоставления URL-адресов

При попытке обнаружить и проанализировать URL-адреса на основе пользовательского ввода крайне важно использовать эффективное регулярное выражение. В вашем случае, хотя ваше текущее выражение фиксирует некоторые форматы URL-адресов, оно не учитывает URL-адреса, у которых отсутствует явная схема протокола, например www.google.com.

Пересмотренное регулярное выражение

Чтобы решить эту проблему и обеспечить полное сопоставление URL-адресов, рассмотрите возможность использования следующего пересмотренного стандартного выражение:

^(?=\S{1,255}$)(https?://)?[-a-zA-Z0-9@:%._\ ~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_\ .~#?&//=]*)

Анатомия регулярного выражения

  • Якоря: обеспечивает начало сопоставления и завершает всю строку.
  • Протокол (необязательно): захватывает необязательный «http» или Схема протокола https.
  • Домен: соответствует имени домена, включая субдомены и домен верхнего уровня.
  • Порт: фиксируется необязательный номер порта (например, «:8080»).
  • Путь: захватывает любой путь информация после домена (например, "/index.html").
  • Query: фиксирует параметры строки запроса (например, "?name=John").
  • Фрагмент: фиксирует идентификатор фрагмента (например, «#footer»).

Это пересмотренное регулярное выражение менее ограничительно и будет успешно соответствовать URL-адресам, таким как www.google.com, а также URL-адресам с явными протоколами (например, http://www.stackoverflow.com).

Пример реализации (JavaScript)

const regex = new RegExp(/(?=\S{1,255}$)(https?://)?[-a-zA-Z0-9@:%._\ ~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_\ .~#?&//=]*)g);
const url = 'www.google.com';

if (url.match(regex)) {
  console.log("URL successfully matched.");
} else {
  console.log("URL did not match.");
}
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3