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

时间:2016-03-15 06:23:58

标签: c# regex

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

这是我的代码:

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

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

2 个答案:

答案 0 :(得分:3)

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

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

具体来说,这种模式:

[+]?[0-9]+

匹配此部分:

+92-322-4995562
^^^

为确保检查整个输入,您必须"锚定"它通过指定模式的开始必须与输入的开始一致,并且模式的结尾必须与输入的结束一致。

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

^....$

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

所以你的最终模式应该是这样的:

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

答案 1 :(得分:1)

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

说明:
^在字符串开头处断言位置 \+匹配字符+
\d匹配数字[0-9]
$断言字符串末尾的位置