c# - 使用正则表达式识别包含单个句点的字符串
问题描述
我正在尝试编写一个正则表达式操作,该操作将简单地识别字符串中是否只有一个句点。
例如,它会识别arandomlink.online
和a@second#random-link.fr
,但它不会识别具有多个句点的 IPV4 IP 地址,例如5.6.7.8
。
我目前正在使用:
string URLpattern = @"\w*\.\w";
但上面的代码标识了我不想要的 IP 地址。
有人有什么想法吗?这可能是一个非常简单的方程式,但现在我还没有想到。我不知道如何将等式限制为仅识别字符串中的一个句点,而不是多个句点。因为我正在使用 Hash 和其他东西,所以最好用单个句点来标识 URL。
解决方案
由于您使用 C# 进行编码,因此在此处使用非正则表达式方法是有意义的(请参阅Klaus Gütter 的评论):
var ContainsOnlyOneDot = text.Count(c => c == '.') == 1;
如果您必须使用正则表达式执行此操作,您可以使用
^[^.]*\.[^.]*$
请参阅正则表达式演示。详情:
^
- 字符串的开始[^.]*
- 零个或多个字符.
\.
- 一个点[^.]*
- 零个或多个字符以外的.
字符$
- 字符串结束。
在 C# 中,您可以使用
if (Regex.IsMatch(text, @"^[^.]*\.[^.]*$"))
{
Console.WriteLine("The string contains one dot only.");
}
else
{
Console.WriteLine("The string contains no dots or more than one dot.");
}
推荐阅读
- regex - 使用带有正则表达式的 Ruby gsub 作为替换
- c - 我正在寻找调整控制台大小的命令
- javascript - 使用 flex 调整 VisNetwork 以及部分的大小
- javascript - 在Javascript中使用回调函数过滤数组
- algorithm - 大 O 和运行时间?
- python - 如何将以下 R 代码转换为 python
- javascript - 在谷歌浏览器中使用 ESC 键关闭模式类型对话框导致缺乏响应
- twitter - 使用 Retrofit 或 OkHttp 的 Twitter API v2 流式传输
- javascript - JavaScript 类构造函数和 DOM(更新)
- java - 无法打印位于第二个 br 标记中的文本内容