2011-06-13 18 views
5

我需要一個正則表達式(用於ASP .NET網站)來驗證電話號碼。它應該是靈活的,唯一的限制是:「通用」電話號碼的基本正則表達式

  • 至少應爲9位數
  • 沒有字母
  • 可以包含空格,連字符,一個單一的(+)

我已經搜索過SO和Regexlib.com,但我得到更多限制的表達式,例如英國電話或美國等

回答

4

這是最好要求用戶填寫自己的國家,然後申請一個正則表達式該國。每個國家都有自己的電話號碼格式。

+0

沒錯,沒有標準,所以很難提供一個全面匹配的正則表達式,而不會使其泛型化,無法防止無效條目。 – GalacticCowboy 2011-06-13 12:40:48

+0

我想要一個靈活的格式。這裏(SA)沒有嚴格的電話格式(例如0711231234,07111231234,071-123-1234,(071)1231234是可接受的)。我想蒙面編輯框是最好的前進方向。 – robasta 2011-06-13 13:07:20

+0

在這種情況下,我想一個正則表達式可以接受10位數字並過濾出(,)和空格符。 – 2011-06-14 10:08:03

6

\+?[\d- ]{9,}

這將長期配合可選的數字開始加,然後至少九個字符用破折號和空格。

雖然這意味着破折號和空格計爲九個字符。 我會刪除破折號和空格,然後只用

\+?[\d]{9,}

2

^[0-9- +] + $

<asp:RegularExpressionValidator runat="server" id="rgfvphone" controltovalidate="[control id]" validationexpression="^[0-9-+ ]+$" errormessage="Please enter valid phone!" /> 
18
^\s*\+?\s*([0-9][\s-]*){9,}$ 

打破它:

^   # Start of the string 
    \s*  # Ignore leading whitespace 
    \+?  # An optional plus 
    \s*  # followed by an optional space or multiple spaces 
    (
    [0-9] # A digit 
    [\s-]* # followed by an optional space or dash or more than one of those 
) 
    {9,}  # That appears nine or more times 
$   # End of the string 

我更喜歡用後一種方式編寫正則表達式,因爲它在將來更易於閱讀和修改;大多數語言都需要設置一個標誌,例如在C#中使用RegexOptions.IgnorePatternWhitespace

+0

請注意,這是一個非常鬆懈的方法;它會接受像'+ - 1 --- 2345 - - - 678 9 - '這樣的數字,並且只會檢查是否至少有9位數字,並且只在開始時出現加號。我認爲這就是你想要的。 – configurator 2011-06-13 13:51:06

0
@"^(?:\+?1[-. ]?)?\(?([0-9]{3})\)?[-. ]?([0-9]{3})[-. ]?([0-9]{4})$" 

這是我使用的。這將處理大多數情況下的通用電話號碼驗證。

0

這是一個超級通用的,只允許您在給定的電話號碼,包括#的字符。它忽略任何格式模式。

@"^([\(\)\+0-9\s\-\#]+)$"