用于在句子中查找域而不是 IP 地址的正则表达式
Regex for finding domains in a sentence but not IP addresses
我正在尝试编写一个正则表达式来匹配句子中的域。
我发现 this post 非常有用,它帮助我创建了以下内容来匹配域,但不幸的是,它也匹配了我不想要的 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
有办法吗?
我们可以使用一个简单的前瞻,只排除数字和点的组合:(?![\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})
@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})
我正在尝试编写一个正则表达式来匹配句子中的域。
我发现 this post 非常有用,它帮助我创建了以下内容来匹配域,但不幸的是,它也匹配了我不想要的 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
有办法吗?
我们可以使用一个简单的前瞻,只排除数字和点的组合:(?![\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})
@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})