vertically-challenged
@vertically-challenged

Как сделать, чтобы это регулярное выражение поддерживало любое количество дефисов и цифры в доменной зоне?

Есть одно регулярное выражение:

/^(?:(?:https?|ftp):\/\/)(?:(?!(?:10|127)(?:\.\d{1,3}){3})(?!(?:169\.254|192\.168)(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-zа-яё\u00a1-\uffff0-9]-*)*[a-zа-яё\u00a1-\uffff0-9]+)(?:\.(?:[a-zа-яё\u00a1-\uffff0-9]-*)*[a-zа-яё\u00a1-\uffff0-9]+)*(?:\.(?:[a-zа-яё\u00a1-\uffff]{2,})))(?::\d{2,5})?(?:\/\S*)?$/


Нужно, чтобы оно поддерживало URL вида https://xn--d1acuaip.xn--p1ai, сейчас проблема в том, что нельзя указать число и два дефиса в доменной зоне, не проходит xn--p1ai после точки
  • Вопрос задан
  • 33 просмотра
Решения вопроса 1
@AUser0
Чем больше знаю, тем лучше понимаю, как мало знаю.
Где-то так
/^(?:(?:https?|ftp):\/\/)(?:(?!(?:10|127)(?:\.\d{1,3}){3})(?!(?:169\.254|192\.168)(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:[a-zа-яё\u00a1-\uffff0-9][a-zа-яё\u00a1-\uffff0-9-]*)(?:\.[a-zа-яё\u00a1-\uffff0-9][a-zа-яё\u00a1-\uffff0-9-]*)*(?:\.[a-zа-яё\u00a1-\uffff][a-zа-яё\u00a1-\uffff0-9-]+))(?::\d{2,5})?(?:\/\S*)?$/
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы