2

我正在验证 10 位北美电话号码(编码如下)。我只接受数字。我似乎无法弄清楚如何更改它,以便如果输入的数字以 911、411 或 0 开头,则会引发错误。

string phoneNum = phoneTextBox.Text;
Regex regex = new Regex(@"^\d{10}$");
Match match = regex.Match(phoneNum);
if (!match.Success)
{
   MessageBox.Show(phoneNum + " is not a valid 10 digit phone number (Ex. 6134561234)");
}
4

3 回答 3

2

尝试这个:

Regex regex = new Regex(@"^(?!411|911|0)\d{10}$");
                           +++++++++++++

它们被称为否定前瞻断言

于 2013-03-25T15:39:57.087 回答
1

您可以使用更高级的模式。尝试在这里找到一个 - http://regexlib.com/DisplayPatterns.aspx?cattabindex=6&categoryId=7

我试过运行 Regex Tracer,它找到了正确的数字 4111111111 模式 - ^\d{10}$。

于 2013-03-25T15:50:06.560 回答
-1

另一种选择 - 电话号码解析器: http: //www.codeproject.com/Articles/31998/Advanced-Phone-Number-Type-Implementation

于 2013-08-08T16:05:32.550 回答