C# 正则表达式不阻止处理错误的输入

C# 正则表达式不阻止处理错误的输入,c#,asp.net,regex,C#,Asp.net,Regex,我正在尝试创建一个只接受两种电话号码输入的regex。电话号码输入是(5554446666)和(+15554446666),没有其他输入,因此这是我写的regex Regex phoneNumberPattern = new Regex(@"^\s*(?:\+?(\d{1,3}))?(\d{7})"); 问题是,当我只输入了七位数字(4446666)时,它接受了。不要使+有条件-整个前缀组都是有条件的,这就是它应该的方式。使+有条件意味着您现在支持7-10个号码的所有电话号码。哦,把$放在末尾

我正在尝试创建一个只接受两种电话号码输入的
regex
。电话号码输入是(5554446666)和(+15554446666),没有其他输入,因此这是我写的
regex

Regex phoneNumberPattern = new Regex(@"^\s*(?:\+?(\d{1,3}))?(\d{7})");

问题是,当我只输入了七位数字(4446666)时,它接受了。

不要使
+
有条件-整个前缀组都是有条件的,这就是它应该的方式。使
+
有条件意味着您现在支持7-10个号码的所有电话号码。哦,把
$
放在末尾。

这样的东西应该会返回所需的电话号码:

(\+1\d{10})|(\d{10})

可能重复一百万个不同的正则表达式问题。你试过做一个测试吗?谢谢,前三个都没有注意这个问题。