使用正则表达式识别包含单个句点的字符串
Identify a string containing a single period with regex
我正在尝试编写一个正则表达式操作,它可以简单地识别字符串中是否只有一个句点。
例如,它会识别arandomlink.online
和a@second#random-link.fr
,但它不会识别具有多个句点的IPV4 IP地址,如5.6.7.8
。
我目前正在使用:
string URLpattern = @"\w*\.\w";
但是上面的代码标识了 IP 地址,我不想要它。
有人有什么想法吗?这可能是一个非常简单的方程式,但我现在还没有想到。我不知道如何将等式限制为仅识别字符串中的一个句点,而不是多个句点。因为我正在处理哈希和其他东西,所以最好用单个句点来识别 URL。
由于您使用 C# 进行编码,因此在此处使用非正则表达式方法很有意义(请参阅 ):
var ContainsOnlyOneDot = text.Count(c => c == '.') == 1;
如果你必须用正则表达式来做,你可以使用
^[^.]*\.[^.]*$
见regex demo。 详情:
^
- 字符串开头
[^.]*
- .
以外的零个或多个字符
\.
- 一个点
[^.]*
- 除了 .
字符 以外的零个或多个字符
$
- 字符串结尾。
在 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.");
}
这样的事情怎么样?
[^\s\.]+\.{1}[^\s\.]+
所以一个点周围除了一个点和一个空格之外的任何东西的否定集。
我正在尝试编写一个正则表达式操作,它可以简单地识别字符串中是否只有一个句点。
例如,它会识别arandomlink.online
和a@second#random-link.fr
,但它不会识别具有多个句点的IPV4 IP地址,如5.6.7.8
。
我目前正在使用:
string URLpattern = @"\w*\.\w";
但是上面的代码标识了 IP 地址,我不想要它。
有人有什么想法吗?这可能是一个非常简单的方程式,但我现在还没有想到。我不知道如何将等式限制为仅识别字符串中的一个句点,而不是多个句点。因为我正在处理哈希和其他东西,所以最好用单个句点来识别 URL。
由于您使用 C# 进行编码,因此在此处使用非正则表达式方法很有意义(请参阅
var ContainsOnlyOneDot = text.Count(c => c == '.') == 1;
如果你必须用正则表达式来做,你可以使用
^[^.]*\.[^.]*$
见regex demo。 详情:
^
- 字符串开头[^.]*
-.
以外的零个或多个字符
\.
- 一个点[^.]*
- 除了.
字符 以外的零个或多个字符
$
- 字符串结尾。
在 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.");
}
这样的事情怎么样?
[^\s\.]+\.{1}[^\s\.]+
所以一个点周围除了一个点和一个空格之外的任何东西的否定集。