2013-03-05 73 views
2

我正在使用RegEx驗證用戶電話號碼。我對電話號碼驗證有一系列要求。我對RegEX沒有太多瞭解。任何人都可以幫助我爲我的要求提供一個匹配的reqex。這裏的驗證非常簡單。正則表達式適用於JavaScript中的電話號碼

條件

1. It should allow numbers from 0-9. 
2. It should allow + sign. (+ sign is not mandatory but not allow after even a single letter (ie: should be placed at front.)). 
3. It should allow - sign. (- sign is also not mandatory and can be placed anywhere) 
4. It should allow empty space everywhere. 
5. No dots or no other chars allowed except the above said things. 

正確的價值觀

+65-12345678 
65-12345678 
6512345678 
65 12345678 
65 123 45678 
65 123-45678 
+65 123-45678 
1234 

不正確的值

12345+86666 
123alpha 

釷anks

+0

首先,具體說明驗證規則,即您想匹配哪些模式。 其次,請嘗試發佈到目前爲止您嘗試的內容,以及您面臨的問題。 – 2013-03-05 10:56:27

回答

5

只是爲了幫助你建立一些概念。
以下正則表達式會匹配您提供的前七個輸入。

/^\+?\d{2}[- ]?\d{3}[- ]?\d{5}$/ 

\+?將匹配一個+跡象。其中的?使得+符號可選。
\d{2}匹配兩位數
[- ]?匹配-(空格)。 ?使得發生-(空格)可選。
\d{5}然後匹配5位數字。
^$是開始和結束錨點。

7

根據您的樣品,試試這個:

^(?:\+?\d{2}[ -]?\d{3}[ -]?\d{5}|\d{4})$ 

它將匹配所有正確的價值觀。

描述:

Regular expression visualization

DEMO:

http://regexr.com?340nf

+2

1up爲解釋圖:) – Immortal 2014-12-11 23:39:07

+0

這是一個很好的答案,因爲它直接回答OP,同時也提供了一個清晰的解釋,這是一個很好的資源,爲那些學習正則表達式。 – 2016-07-12 18:25:03

1

根據你的樣本試試這個模式。

^(?:\+?\d{2}[ -]?[\d -][\d -]+)$