регулярное выражение для соответствия только .gov tlds - PullRequest
0 голосов
/ 30 июля 2010

Я пытаюсь написать регулярное выражение, чтобы получить полный URL любого веб-адреса .gov или .edu, чтобы превратить его в ссылку.

В настоящее время у меня есть:

/(\b(https?|ftp):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/

все в (), поэтому я могу извергнуть его за любой URL , но мне нужны только .gov или .edu.

Заранее спасибо.

1 Ответ

1 голос
/ 30 июля 2010

[-A-Z0-9+&@#\/%?=~_|!:,.;]*, кажется, отбивает большую часть URL, поэтому нам нужно где-то здесь зажать .gov и .edu. Самое быстрое решение будет:

[-A-Z0-9+&@#\/%?=~_|!:,.;]+(\.gov|\.edu)[-A-Z0-9+&@#\/%?=~_|!:,.;]*

Однако, это будет соответствовать URL-адресу, как: http://www.example.com/evil.gov/test.html

Чтобы исправить это, мы можем извлечь /, который ему соответствует, перед доменом верхнего уровня:

[-A-Z0-9+&@#%?=~_|!:,.;]+(\.gov|\.edu)[-A-Z0-9+&@#\/%?=~_|!:,.;]*

Или, в заключение, мы имеем:

/(\b(https?|ftp):\/\/[-A-Z0-9+&@#%?=~_|!:,.;]+(\.gov|\.edu)[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|]?)/

Из-за проблемы, которая не соответствует example.gov, я добавил ? к последнему токену.

Черт, это безобразно.

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