2016-10-31 5 views
0

Мне будет предоставлен URL-адрес, и вам нужно будет сопоставить регулярное выражение, только если URL-адрес заканчивается в определенном домене верхнего уровня. Например, только если доменное имя .cn. Моя идея: *.cn.Как я могу сопоставить определенный домен верхнего уровня с RegEx?

Но это не должно совпадать, если подстрока .cn не находится в конце домена. Например:

  • cnn.com - нет матча
  • cnn.cn - матч
  • www.csc.edu.cn/studyinchina/ - матч

Как я могу это сделать?

+0

попробовать это '\ .cn $ ' –

+0

Будет ли URL-адрес всегда заканчиваться в домене верхнего уровня? На каком языке вы это используете? – chris85

+0

Это будет использоваться на брандмауэре, который принимает регулярные выражения, а не внутри языка программирования. –

ответ

0

Следующая, кажется, работает нормально (просто проверял свои 3 примера хотя)

^(http:\/\/)?(\w*\.)*(cn)(\/.*)?$ 

Перед тем, как поместить его в брандмауэре, пожалуйста, попробуйте другие страницы сайта! Я уже добавил те, которые вы упомянули как модульные тесты в regex101.

Регулярное выражение строится под asumption, что ни косой черты («/») не может произойти до домена верхнего уровня (за исключением тех, в, за исключением «HTTP: //»)

+1

Dang это замечательно. Спасибо за помощь. Я думаю, что это все - тестирование сейчас. Добавлено https:^(http: \/\/| https: \/\ /)? (\ W * \.) * (Cn) (\ /.*)? $ –

+0

@mlayt вы также можете заменить '(http: \/\/| https: \/\ /) 'с' (https?: \/\ /) ', чтобы сократить регулярное выражение. – EvilDevil

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