2013-10-09 2 views
3

у меня есть Regex чтобы соответствовать субдоменов веб-страницы, как показано нижеRegex чтобы соответствовать все поддомены подобранного доменов

"^https://[^/?]+\\.(sub1|sub2\\.)domain\\.com" 

Что бы регулярное выражение, чтобы принимать какие-либо суб домен domain.com.

Edit:

Моего вопрос был неполным, мое регулярное выражение должны было принять только

https:[any number of sub domain s ].sub1domain.com 

или

https://[any number of sub domain s ].sub2domain.com 

К сожалению для размещения неполного вопроса.

ответ

16

Это один должен соответствовать вашим потребностям:

https?://([a-z0-9]+[.])*sub[12]domain[.]com 

Regular expression visualization

+0

Таким образом (как было протестировано демо) URL https://sub1.sub2.sub1domain.com return * sub2 *, хотя я предполагаю, что он хочет * sub1.sub2 *. –

+0

@ marianoc84 Я не понимаю ... Что вы подразумеваете под * «return» *? – sp00m

+0

@ sp00m Возможно «захвачено в $ 1». – AlexR

1

Что-то вроде:

(http|https)://(.*).domain.com 

В этот момент второй тег (т.е. \2 или $2 переменной) является то, что вам нужно. Обратите внимание: это регулярное выражение не проверяет URL.

Доказательство: https://www.debuggex.com/r/3KYGmAnlnBq3C_fT

+0

Спасибо за ответ. Не могли бы вы посмотреть мой вопрос об обновлении – Exception

+0

Проверьте, дайте мне знать! –

1

Если предположить, что субдомены содержат только цифры и строчные буквы, и вы не хотите, чтобы принять суб поддомены:

[0-9a-z]*\.domain\.com 

обновление:

https://.*\.sub[1|2]domain\.com 

Удачные

https://sub1.sub2.sub1domain.com 
https://sub1.sub1domain.com 

но не

https://sub1domain.com 
+0

Спасибо за ответ. Не могли бы вы посмотреть мой вопрос об обновлении – Exception

+0

, обновленный в соответствии с вашими изменениями. – Rhand

1

Вы бы использовать

"^https://[^/?]+\\.([^.]+)\\.domain\\.com" 

, которая сводится к сопоставлению

"[^.]+" 

для любого поддомена. будет соответствовать только последней части субдомена (www.xxx.domain.com будет захватывать «xxx» в группе 1)

+0

Спасибо за ответ. Не могли бы вы посмотреть мое обновление вопроса? – Exception

1

Попробуйте http://([^.]+\\.)+sub[12]domain.com. Отличное место для тестирования регулярных выражений с минимальной болью при настройке - RegexPlanet.

2

Я предполагаю, что не хочу, чтобы субдомены отличались просто числом. Используйте это регулярное выражение:

(^https:\/\/(?:[\w\-\_]+\.)+(?:subdomain1|subdomain2).com) 

Единственная группа захвата - полный URL. Просто замените subdomain1 и subdomain2 вашими реальными субдоменами.

Я испытал это на regex101.com

Смежные вопросы