我是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]
$
字符串末尾断言位置