正则表达式在 C# 中无法准确工作



我是C#的新手,使用正则表达式。我已经准确地创建了一个正则表达式并在线测试,但是当我在我的函数中使用该正则表达式时,它总是将其验证为成功案例。

这是我的代码:

 Regex regex = new Regex(@"[+]?[0-9]+");
        Match match = regex.Match(phone);
        if (match.Success)
        {
            return true;
        }
        else
        {
            return false;
        }

我正在使用这个号码来验证:+92-322-4995562,根据我的正则表达式,它必须无效,但它将我作为匹配情况返回。请帮忙

不,这没有错,因为你没有锚定模式。

这允许正则表达式引擎在输入中找到模式匹配的位置,而不是被迫检查整个输入是否匹配。

具体来说,此模式:

[+]?[0-9]+

匹配此部分:

+92-322-4995562
^^^
为了确保它检查整个输入,您必须通过指定模式的开始必须与输入的

开始一致,并且模式的结束必须与输入的结束一致来"锚定"它。

您可以使用如下模式执行此操作:

^....$

^字符锚定到输入的开头,$定位到输入的末尾。

因此,您的最终模式应如下所示:

^[+]?[0-9]+$

试试这个
^[+]?[0-9]+$^+?d+$

解释:
^字符串
开头断言位置 +与字符+
匹配 d匹配数字 [0-9]
$字符串末尾断言位置

最新更新