2012-03-24 139 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