2012-03-24 89 views
-2

我需要写一个正则表达式,这将是对于一些规则的电话号码是否正确:如何写一个正则表达式

1) max length 13 symbols 
2) it should start from '+' 
3) it should contain sonly numbers [0-9] 

因此,举例来说,它应该是这样的:

+447289347598342745 
+0

这是功课? – 2012-03-24 15:04:25

+2

您的示例的长度为18.(如果您计算+,则为19) – 2012-03-24 15:04:32

回答

2
Regex re = new Regex(@"^\+\d{1,13}$"); 
  • ^\+ →的字符串必须以+开始。请注意,+必须是escaped,因为否则它具有特殊含义。
  • \d →相当于字符类[0-9]
  • {1,13} →必须有至少一个没有数字字符

在.NET中的超过13个OCCURENCES,就应该把使用[0-9]而不是\d,否则你应该指定RegexOptions.ECMAScript。否则,正则表达式将匹配一个字符串,如+୧٢३੪૫(其中包含各种脚本中的Unicode数字1-5)。 - Michael Liu

因此,无论使用:

Regex re = new Regex(@"^\+[0-9]{1,13}$"); 
// or 
Regex re = new Regex(@"^\+\d{1,13}$", RegexOptions.ECMAScript); 
+0

也就是说,您可能还需要最小数字位数> 1。 – 2012-03-24 15:09:23

+0

在.NET中,您应该使用'[0-9]'而不是'\ d',否则您应该指定'RegexOptions.ECMAScript'。否则,正则表达式将匹配一个字符串,如'+୧2345'(其中包含各种脚本中的Unicode数字1-5)。 – 2012-03-24 15:28:24

+0

谢谢!我不知道。编辑 – 2012-03-24 15:45:25