2011-02-17 48 views
0

我在嘗試驗證RegEx的電話號碼。如何驗證電話號碼或在文本字段中允許帶有RegEx的空格?

我被提供有這樣的回答:

Regular Expression for Phone Number

限定驗證以下的電話號碼的表達:+44(0)1234 123456

我已經從JS到移植它C#,是

var regexPhone = new Regex(@"^(?!([^-]*-){5})(\+\d+)?\s*(\(\d+\))?[- \d]+$");

這工作,但驗證也適用於允許空白的電話號碼字段,例如一個傳真(不是每個人都有一箇舊式的設備了)。

我該如何改變這個以允許空格,以及驗證上面的數字?

編輯:下面的答案適用於上述號碼,但它的失敗:+ 44(0)20 1234 1234.有什麼我可以爲此添加?

var regexPhone = new Regex(@"^(?!([^-]*-){5})(\+\d+)?\s*(\(\d+\))?[- \d]+$|^$"); 

編輯

回答

4

只需在最後加一個|^$既然你想有一個更寬鬆的正則表達式,空白,明智的,只是撒上\s*

var regexPhone = new Regex(@"^\s*(?!([^-]*-){5})(\+\s*\d+)?\s*(\(\s*\d+\s*\))?\s*[- \d]+\s*$|^\s*$"); 
+0

這是有效的,對於上面的數字,但是它失敗了:`+ 44(0)20 1234 1234`。還有什麼我可以爲此添加的?更新問題以反映。 – DaveDev 2011-02-17 14:09:14

+0

@DaveDev,看我的更新。 – Blindy 2011-02-17 14:27:18

0

我已經嘗試它,它的工作原理。

<asp:TextBox runat="server" ID="testInput"></asp:TextBox> 
      <asp:RegularExpressionValidator ValidationExpression="aa|^$" 
runat="server" ControlToValidate="testInput"></asp:RegularExpressionValidator>