2012-03-07 2963 views
-2

正在尋找印度電話號碼的正則表達式印度電話號碼的正則表達式

正則表達式應該允許以下所有格式。

的座機沒有

0802404408 
080-2404408 
+91802404408 
+91-802404408 

移動沒有

8147708287 
08147708287 
+918147708287 
+91-8147708287 

誰能幫助我,在此先感謝

我的代碼是

[RegexValidator("[0-9 -]*" 
, MessageTemplateResourceName = "INVALID_PHONE" 
, MessageTemplateResourceType = typeof(ValidatioinErrors))] 
public string Phone 
{ 
     get { return phone; } 
     set { phone = value; } 
} 

public bool IsValid() 
    { 
     return Validation.Validate<Class_name>(this).IsValid; 
    } 

    public ValidationResults ValResults 
    { 
     get 
     { 
      return Validation.Validate<Class_name>(this); 
     } 
    } 

此驗證的事情我只是 在我的命名空間稱爲

using Microsoft.Practices.EnterpriseLibrary.Validation; 
using Microsoft.Practices.EnterpriseLibrary.Validation.Validators; 

,在表達做工精細的UI部分,但在如上後面的代碼,它顯示「無效的電話號碼」,如果我給的值080-2404408

+2

你有什麼嘗試?堆棧溢出不是其他人爲你工作的網站。此外,對於那些不熟悉印度數字的人,您需要進一步解釋規則是什麼。具體需要多少位數字,哪些數字。 – Phrogz 2012-03-07 06:45:17

+0

感謝Phrogz,我嘗試了數字格式的簡單表達式爲「[0-9 - ] *」,它似乎沒有錯誤,但是當我在後面的代碼中使用此表達式時(在我的業務對象中),並且如果將該值作爲「080-2404408」,條件不滿足並顯示錯誤。但如果我在設計部分使用它,它工作正常,我嘗試在網絡中ñ我只發現固定電話格式或移動,但我需要允許他們兩個,這是什麼問....很抱歉打擾你在這裏。 – shanish 2012-03-07 07:06:29

+0

@Shanish,你的正則表達式'[0-9 - ] *'會匹配「080-2404408」。如果你得到一個錯誤,這個問題在別的地方。你已經[得到這個答案](http://stackoverflow.com/a/9495246/626273)! – stema 2012-03-07 07:30:55

回答

4

您可以嘗試

^\+?[0-9-]+$ 

看到它here on Regexr

重要的部分是錨^$的開始和字符串的結尾。我還在開始時添加了\+?,以匹配可選的++需要轉義,因爲它是一個正則表達式中的特殊字符,?使它可選。

當然這是一個非常簡單的模式,請注意例如「-----」也是有效的。

+0

感謝您的回覆stema,當我嘗試你的表達時,它顯示錯誤,「+」是無法識別的轉義序列 – shanish 2012-03-07 07:42:37

+0

@Shanish也許你需要雙重逃脫?試試'^ \\ +?[0-9 - ] + $'。您不會告訴我們您的語言,也許您可​​以使用原始/逐字字符串避免雙重轉義。 – stema 2012-03-07 07:52:35

+0

感謝stema您的友善迴應,請參閱我的手機沒有格式在UI部分以及在代碼隱藏,爲此cb使用Microsoft.Practices.EnterpriseLibrary.Validation.Validators dll,當我給手機沒有值爲080-244408或0802404408它顯示沒有錯誤,但是當我給080-2404408(比前一個額外的字符)它顯示無效的電話號碼,我仍然面臨這一點,看到我只是一個初學者,我在c#.net中使用它 – shanish 2012-03-07 08:02:34

2

對於提供的示例以下正則表達式的工作原理:

/^(?:\+91(?:-)?|0\d{2,4}-|0|)\d{7,10}$/ 
+0

謝謝anubhava,我會檢查它和那麼讓你知道 – shanish 2012-03-07 07:29:11

+1

時間讓他知道了嗎? – Kay 2015-05-28 13:49:17

+0

@shanish:您的問題標題正在檢查印度的電話號碼,您接受的答案也允許使用「+ 44」或「+ 92」國家代碼。 – anubhava 2015-05-28 14:04:22