2012-03-12 29 views
0

我想要的電話號碼,這使得10 digits並檢查min numbers should be 10 and max 12包括- dash two times爲前JavaScript驗證一個非常簡單的正則表達式。 123-123-1234正則表達式的Javascript電話號碼驗證最小最大長度檢查

我在網上找到了一些,但是他們都沒有在爲min/max length工作。

期待在這裏快速回復。

謝謝!

+0

這個問題的一個很好的答案應該解釋這個表達式是不可能的並且提出解決方法。一個很好的答案會提供這樣的表達。 – georg 2012-03-12 10:02:21

+0

是的,但任何想法都可以在最小/最大長度檢查的情況下工作n所述驗證? – 2012-03-12 10:08:00

+0

我的電話號碼有13個字符,其中一個是「+」......要非常小心,如果您限制電話號碼,則不會拒絕使用您網站的人使用的真實號碼。 – Quentin 2012-03-12 10:40:20

回答

2

你能做到這一點

/^(?!.*-.*-.*-)(?=(?:\d{8,10}$)|(?:(?=.{9,11}$)[^-]*-[^-]*$)|(?:(?=.{10,12}$)[^-]*-[^-]*-[^-]*$) )[\d-]+$/ 

看到它here on Regexr

(?!...)negative lookahead assertion

(?=...)positive lookahead assertion

^           # Start of the string 
    (?!.*-.*-.*-)       # Fails if there are more than 2 dashes 
    (?=(?:\d{8,10}$)     # if only digits to the end, then length 8 to 10 
     |(?:(?=.{9,11}$)[^-]*-[^-]*$) # if one dash, then length from 9 to 11 
     |(?:(?=.{10,12}$) 
      [^-]*-[^-]*-[^-]*$   # if two dashes, then length from 10 to 12 
     ) 
    ) 
[\d-]+          # match digits and dashes (your rules are done by the assertions) 
$           # the end of the string 
+0

它適用於我,tnx – 2012-03-13 11:55:09

0

有沒有簡單的方法來做到這一點與正則表達式,尤其是如果你讓破折號出現在一些不同的點。

如果允許破折號只在地方作爲你的榜樣,那麼這將是^\d{3}-?\d{3}-?\d{4}$

這一個:^[\d-]{10,12}$匹配字符串,從10長到12,並且只包含數字和破折號,但它也將匹配例如-1234567890-

+0

但這是否適用於「最小/最大長度」檢查?我不確定這是否適用於長度檢查 – 2012-03-12 10:07:27

+0

這個字符允許像「123-123-1234」或「123123-1234」或「123-1231234」或「1231231234」這樣的字符串,這意味着長度總是10 -12。沒有辦法直接檢查字符串的長度和一個正則表達式中關於它的字符的標準。 – kirilloid 2012-03-12 10:11:25

2

你要求的不會是什麼SIM卡並且可以在沒有任何使用的情況下解決它們。

function isPhoneNumberValid(number){ 
    var parts, len = (
    parts = /^\d[\d-]+\d$/g.test(number) && number.split('-'), 
    parts.length==3 && parts.join('').length 
); 
    return (len>=10 && len<=12) 
} 

可以肯定的,這可能是比使用正則表達式編譯慢了一點,但開銷是些小如果你不打算要檢查幾百萬分之一的電話號碼這種方式。

這是不以任何方式完美的,但可能會滿足您的需求,但要小心,這允許在任何地方兩個破折號排除啓動和數量的結束,所以這將返回true字符串像111--123123

相關問題