Regexp для сопоставления домена и поддоменов (в Java) - PullRequest
2 голосов
/ 04 ноября 2010

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

Пример: я хочу разрешить только домены, которые удовлетворяют этой "псевдомаске":

https://*.domain.com
http://*.domain.com

Итак, следующие доменывсе в порядке:

http://my.domain.com/something/blah.html
https://www.domain.com/
http://domain.com/go/somewhere.html
https://very.weird.domain.com/index.jsp

, но следующие домены не в порядке:

https://domain.com.google.com/other.html
http://my.domainfake.com/haha.jsp
https://my.fakedomain.com/

Ответы [ 3 ]

1 голос
/ 04 ноября 2010
^https?://[^/@]*\.domain\.com(/.*)?$

(Не- / для остановки .domain.com, появляющейся в пути, не- @ для остановки имени пользователя: пароль @ злоупотребление.)

Лучше, хотя: используйте URL класс, встроенный в Java для правильного разбора URL.Затем вы можете просто прочитать свойство host и убедиться, что оно endsWith вашего домена.

1 голос
/ 04 ноября 2010

Попробуйте это:

^https?://(?:[^./@]+\.)*domain\.com(?![^/])

[^.]+\. означает один или несколько не точечных символов, за которыми следует точка ; быстрый и грязный способ сопоставить компонент имени домена и его конечную точку. Я бы не использовал это, чтобы найти доменных имен в большем объеме текста, но этого достаточно для проверки, которую вы делаете. Поместите это в группу и добавьте квантификатор *, чтобы получить регулярное выражение, соответствующее нулю или большему количеству компонентов.

Вам неважно, что следует за доменным именем, но вы должны убедиться, что достигли его конца; например, вы не хотите соответствовать http://domain.company.com. Последняя часть регулярного выражения, (?![^/]), является отрицательным взглядом, который означает , если после этого есть другой символ, и этот символ не /, ошибка .

0 голосов
/ 04 ноября 2010

вы можете использовать

"http://a.domain.com".indexOf("domain.com") 

это вернет -1, если запрошенная строка отсутствует в тексте.

так как ты не можешь хотеть '.' после 'domain.com'

вы можете использовать

"http://a.domain.com".indexOf("domain.com.")

и проверьте, -1 это или нет

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