2014-09-29 93 views
4

我需要验证C#中的电话号码。电话号码正则表达式带连字符的C#

该模式应该包含10个数字(必选),-可以在模式中的任何位置使用。

  • 如1:
  • 例如2:98-765-432-10
  • 如3:-98-765-432-10-

这是我的尝试:

Regex a = new Regex(@"^([0-9]{10}\-*)$") 
+0

你的意思是确切的10位? – 2014-09-29 06:31:14

+0

该模式应包含10位数字,可能包含或不包含连字符。 – 2014-09-29 06:33:08

回答

0

你可以使用下面的正则表达式来检查,如果输入了整整10数字或不。

^(?:-*\d-*){10}$ 

DEMO

2

这样做:

string num = "98-765-432-10"; // any number 
if(Regex.IsMatch(num, "^[0-9-]+$") && num.Replace("-","").Length == 10){ 
    // do something 
} 

在上面,您检查数字是否只包含连字符和数字,然后检查数字的长度是否为10.它也使用短路,这是更好的。

我不确定语法,但它必须是它。

2

如果要使用精确的验证10位数字的电话号码(而不是更多,而不是更少),你可以使用这个表达式

string pattern = "([\-]?\d[\-]?){10}";