2011-03-09 62 views
0

我想建立一個驗證器(JavaScript)的,可以從不同國家的驗證號碼,列表格式

我希望能夠用這個骨架phone('NZ', '049234567', false, false);

這是稱之爲「COUNTRY PREFIX「,」NUMBER「,」LANDLINE「,」國際「。

我該如何去做這樣的事情?

目前,我在想有什麼樣的

var phones = { 
    NZ: { 
     national: { 
      landline: [ 
       '03{2,9}n(6)', //read as 03[a number between 2 and 9][a random number][repeat previous expression 6 times] 
       '04{2,9}n(6)', //read as 04[a number between 2 and 9][a random number][repeat previous expression 6 times] 
       '06{2,9}n(6)', //read as 06[a number between 2 and 9][a random number][repeat previous expression 6 times] 
       '07{2,9}n(6)', //read as 07[a number between 2 and 9][a random number][repeat previous expression 6 times] 
       '09{2,9}n(6)' //read as 09[a number between 2 and 9][a random number][repeat previous expression 6 times] 
      ], 
      mobile: [ 
       '020n(7,10)', //read as 020[a random number][repeat previous expression between 7 and 10 times] 
       '021n(7,10)', //read as 021[a random number][repeat previous expression between 7 and 10 times] 
       '022n(7,10)', //read as 022[a random number][repeat previous expression between 7 and 10 times] 
       '027n(7,10)', //read as 027[a random number][repeat previous expression between 7 and 10 times] 
       '029n(7,10)' //read as 029[a random number][repeat previous expression between 7 and 10 times] 
      ] 
     }, 
     international: { 
      landline: [ 
       '+643{2,9}n(6)', //read as +643[a number between 2 and 9][a random number][repeat previous expression 6 times] 
       '+644{2,9}n(6)', //read as +644[a number between 2 and 9][a random number][repeat previous expression 6 times] 
       '+646{2,9}n(6)', //read as +646[a number between 2 and 9][a random number][repeat previous expression 6 times] 
       '+647{2,9}n(6)', //read as +647[a number between 2 and 9][a random number][repeat previous expression 6 times] 
       '+649{2,9}n(6)' //read as +649[a number between 2 and 9][a random number][repeat previous expression 6 times] 
      ], 
      mobile: [ 
       '+6420n(7,10)', //read as +6420[a random number][repeat previous expression between 7 and 10 times] 
       '+6421n(7,10)', //read as +6421[a random number][repeat previous expression between 7 and 10 times] 
       '+6422n(7,10)', //read as +6422[a random number][repeat previous expression between 7 and 10 times] 
       '+6427n(7,10)', //read as +6427[a random number][repeat previous expression between 7 and 10 times] 
       '+6429n(7,10)' //read as +6429[a random number][repeat previous expression between 7 and 10 times] 
      ] 
     } 
    } 
} 

回答

0

我覺得這個規則將是過於複雜,如果你這樣做,你將不得不寫個別代碼的一切。

例如,對於英國(從this wikipedia page,爲了清楚起見去掉空格)

+4420xxxxxxxx London 
+4429xxxxxxxx Cardiff 
+44113xxxxxxx Leeds 
+44116xxxxxxx Leicester 
+44131xxxxxxx Edinburgh 
+44151xxxxxxx Liverpool 
+441382xxxxxx Dundee 
+441386xxxxxx Evesham 
+441865xxxxxx Oxford 
+441204xxxxx Bolton 
+4415396xxxxx Sedbergh 
+4416977xxxx Brampton 

注意,其中一些是不同的長度,如果你想在規範格式吐出,有噸對於那些不同的間距要求等等。

+0

您好, 歡迎您的回答,這看起來非常類似於我在做什麼(請參閱我的編輯)您有任何其他建議嗎? – Hailwood 2011-03-09 01:50:41

+0

如果這只是驗證而不是格式化,是的 - 但我會使用標準的正則表達式格式,而不是您自己的自制規範。 ''^ \ + 649 [2-9] \ d {6,6} $''(我不確定JavaScript的正則表達式格式) - http://en.wikipedia.org/wiki/Regular_expression解釋了正則表達式一般。 – Dre 2011-03-09 01:58:42

+0

好吧,我說謊了一點,沒有太多的驗證,但爲了生成有效的虛擬數據(其谷歌鉻擴展im建立,這是用來幫助填寫表單與測試數據) – Hailwood 2011-03-09 02:43:30

1

World Telephone Number Guide對國家編號計劃尤其有用,特別是例外。 ITU也有很多東西的免費標準。

由於各個國家的權威機構可能會在更新這些或其他類似網站之前進行「實時」更改,因此與此信息保持同步可能會很困難。例如,WTNG的NZ條目目前有大約70個數字範圍。

最好的辦法是檢查有效的國家/地區代碼,地區代碼的最小和最大位數(對某些國家可能是可選或不需要的)以及最小/最大長度用戶號碼。

從用戶界面的角度來看,我看到的一個很好的佈局有一個包含國家名稱和代碼的下拉列表,然後區分區號和用戶號碼文本字段。用戶也可以輸入空格,破折號等,如果他們想要的話;即用戶永遠是對的:-)。