2012-11-21 22 views
1

我對正則表達式不是很有經驗,我需要使用javascript驗證電話號碼。 我有一個文本框需要被允許與​​3210分隔符和字符可以被允許用於電話號碼接受多個電話號碼是使用正則表達式支持多個數字驗證電話號碼

  1. 「+」
  2. 「 - '

有人可以幫助我如何使用javascript和正則表達式/正則表達式實現這個嗎?

實施例:

+ 91-9743574891; + 1-570-456-2233; + 66-12324576

我嘗試以下:

^[0-9-+;]+$ 

不是當然如果這是正確的。

+0

你嘗試過什麼嗎? – sp00m

+0

@ sp00m,我試了下面的^ [0-9 - +;] + $ –

+0

看看這裏的初學者:[http://stackoverflow.com/questions/123559/a-comprehensive-regex-for-phone-數字驗證](http://stackoverflow.com/questions/123559/a-comprehensive-regex-for-phone-number-validation) – garyh

回答

1

您已將-放在錯誤的地方,因此,您的regex不起作用。

試試這個(你的正則表達式,但略有修改):

^[0-9+;-]+$ 

^[-0-9+;]+$ 

要包含一個字符類中的連字符,則必須執行下列操作之一:

  1. 轉義連字符並使用\-,
  2. 將連字符放在字符類的開頭或結尾。

由於連字符用於指定一個字符範圍。所以,正則表達式引擎理解[0-9-+;]+匹配任何0之間的字符的至99+(具有十進制碼點57所有字符[炭9]至43 [炭+]和失敗)和;

+0

我知道爲什麼,但對於OP你應該擴大一點。 – PointedEars

+0

你已經解釋了做什麼,但不是爲什麼。 '-'需要特別處理的原因是字符類中的'-'分隔了字符的開始和結尾(以及ECMAScript中的代碼點)範圍。 – PointedEars

+0

@PointedEars:我錯過了一些東西。謝謝。 – Cylian

0

這個怎麼樣^([0-9\-\+]{5,15};?)+$

說明:

^   #Match the start of the line 
[0-9\-\+] #Allow any digit or a +/- (escaped) 
{5,15}  #Length restriction of between 5 and 15 (change as needed) 
;?   #An optional semicolon 
+   #Pattern can be repeat once or more 
$   #Until the end of the line 

只有限制性按規定可能更嚴格,看它的工作here

0

要更嚴格一點,你可以使用下面的正則表達式:

/^\+[0-9]+(-[0-9]+)+(;\+[0-9]+(-[0-9]+)+)*$/ 

什麼它將匹配:

+91-9743574891 
+1-570-456-2233;+66-12324576 

什麼也不會匹配:

91-9743574891 
+15704562233 
6612324576 
0

你的正則表達式將匹配您允許的話,但我會有點更嚴格:

^\+?[0-9-]+(?:;\+?[0-9-]+)*$ 

看到它here on Regexr

這意味着匹配一個可選的「+」,然後是一連串的數字和破折號。然後可以有任何數量的以分號開始的附加數字,然後是與第一個數字相同的模式。

相關問題