【发布时间】:2021-11-18 14:03:25
【问题描述】:
我正在尝试编写一个正则表达式操作,它可以简单地识别字符串中是否只有一个句点。
例如,它会识别arandomlink.online 和a@second#random-link.fr,但它不会识别带有多个句点的IPV4 IP 地址,例如5.6.7.8。
我目前正在使用:
string URLpattern = @"\w*\.\w";
但上面的代码标识了我不想要的 IP 地址。
有人有什么想法吗?这可能是一个非常简单的方程式,但现在我还没有想到。我不知道如何将等式限制为仅识别字符串中的一个句点,而不是多个句点。因为我正在使用 Hash 和其他东西,所以最好用单个句点来标识 URL。
【问题讨论】:
-
像
.co.uk这样的复杂顶级域名的URL呢? -
我不打算回答,我在手机上,无法测试,但
[^\.]*表示0个或多个不是句点的字符,\.匹配单个点,所以我很确定[^\.]*\.[^\.]*会做你想做的事(只要字符串长度大于 1) -
@VLAZ 感谢您的回复!我将添加一些带有多个句点的 URL 作为例外。这是最方便的方法。我可能不会全部击中,但我得到的越多越好。
-
@Flydog57 感谢您的回复!您所说的很有道理,不幸的是,您所写的内容也捕获了 IP 地址。我会玩弄它,看看我是否可以修改你建议的工作。
-
使用
Regex.IsMatch(text, @"^[^.]*\.[^.]*$")