Регулярное выражение для поиска доменов в предложении, но не IP-адресов - PullRequest
1 голос
/ 15 апреля 2019

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

Я нашел этот пост , который был очень полезен и помог мне создать следующее для сопоставления доменов, но, к сожалению, он также сопоставляет IP-адреса, которые мне не нужны:

((?!-))(xn--)?[a-z0-9][a-z0-9-_]{0,61}[a-z0-9]{0,1}\.(xn--)?([a-z0-9\._-]{1,61}|[a-z0-9-]{1,30})

Я хочу обновить свое выражение, чтобы по-прежнему можно было найти следующее: в предложении, в скобках и т. Д.:

www.example.com
subdomain.example.com
subdomain.example.co.uk

Но не:

192.168.0.0
127.0.0.1

IsЕсть ли способ сделать это?

Ответы [ 2 ]

2 голосов
/ 15 апреля 2019

Мы могли бы использовать простой взгляд, исключающий только комбинации чисел и точек: (?![\d.]+)

(?![\d.]+)((?!-))(xn--)?[a-z0-9][a-z0-9-_]{0,61}[a-z0-9]{0,1}\.(xn--)?([a-z0-9\._-]{1,61}|[a-z0-9-]{1,30})

Демо

0 голосов
/ 18 апреля 2019

Ответ от @ wp78de правильный, однако он не будет обнаруживать домены, начинающиеся с цифр, т. Е. 123reg.com

Поэтому удалите первую группу из регулярного выражения, как это

((?!-))(xn--)?[a-z0-9][a-z0-9-_]{0,61}[a-z0-9]{0,1}\.(xn--)?([a-z0-9\._-]{1,61}|[a-z0-9-]{1,30})
...