Я пытаюсь сопоставить простой домен: example.com
Но все его комбинации.
Как я могу это сделать:
https://example.com http://www.example.com etc.
Я пытаюсь сопоставить простой домен: example.com
Но все его комбинации.
Как я могу это сделать:
https://example.com http://www.example.com etc.
^https?://([\w\d]+\.)?example\.com$
с использованием кода:
var result = /^https?:\/\/([a-zA-Z\d-]+\.){0,}example\.com$/.test('https://example.com');
// result is either true of false
Я улучшил его, чтобы он соответствовал "http://a.b.example.com"
Более общий пример, который я использовал:
/http(?:s)?:\/\/(?:[\w-]+\.)*([\w-]{1,63})(?:\.(?:\w{3}|\w{2}))(?:$|\/)/i
Обратите внимание, что это решение не подбирает правильную метку для TLD с 5 символами. Пример:
http://mylabel.co.uk
Будет выбран как "co" вместо "mylabel", но
http://mylabel.co
будет правильно сопоставлен как "mylabel". Регулярное выражение было достаточно хорошим для меня даже с этим ограничением.
Обратите внимание, что предел 63 символов для метки является спецификацией RFC. Надеюсь, это поможет любому, кто ищет тот же ответ в будущем.
Возможно, вы можете использовать только совпадение с доменным именем в URL-адресе:
/^(?:http(?:s)?:\/\/)?(?:[^\.]+\.)?example\.com$/
Он будет соответствовать любой из следующих строк:
https://example.com
http://www.example.com
http://example.com
https://example.com
www.example.com
example.com
UPDATE:. Чтобы полностью использовать URL-адрес (а не только часть имени домена):
/^(?:http(?:s)?:\/\/)?(?:[^\.]+\.)?example\.com(?:/.*)?$/
Следующие работы в Java,
^(http:|https:|)[/][/]([^/]+[.])*example.com$
и соответствует вашим тестовым примерам, а не соответствует, например,