2016-11-28 14 views
-2

電話番号を+<countrycode><areacode><number>形式に標準化したいと考えています。問題は、入力があるかもしれないです:NodeJSの電話番号を標準形式に変換するにはどうすればよいですか?

+972-54-5123456 
+972545123456 
972545123456 
+972 (54) 5123456 
00972545123456 
0545123456 // especially problematic, as I have to assume it's an Israeli number 

私は入力が何であれ、いずれか972545123456または+972545123456フォーマットにすべてを正常化したいと思います。だから、それはおそらく次のようになります。

normalizeNumber('0545123456',default_country="IL") 
+2

"_Howは私がNodeJSに電話番号を標準化するか_?" あなたが望む任意の方法をここでNPMです。 –

+0

これは、必要に応じて論理作成です。 –

+1

@OrangeDog、その編集はまったく役に立たなかった。英国の英語からアメリカの英語への3単語の変更...おめでとう。 –

答えて

-1

非常にシンプル、ちょうどそれをコード:

function normalizeNumber(input, default_country) { 
    return String(input) 
     .replace(/[^+0-9]/g, '') // remove non-number (and +) characters 
     .replace(/^00/, '+') // replace leading 00 with + 
     .replace(/^0/, getCountryCode(default_country)) // replace leading 0 with default code 
} 

をしたい場合は、アップ文を分割し、そのような最終結果がで始まるかどうかなど、いくつかのチェックを、追加することができます+および/または予想される長さである。

次のモジュールがgetCountryCodeのソースとして使用することができます:

+0

ありがとう@OrangeDog、しかし、私は確かにそれを行うよりスマートなモジュールがあると確信しています。とりわけ多くの利用可能なフォーマットが存在するため、主要な国別コードだけでなく、国によって異なるハイフンやかっこなどがあります。 – eran

+0

しかし、それらをすべて削除したいという唯一の要件でした。 – OrangeDog

2

は、Googleのlibphonenumberを使用してください。そのページ、使用例から撮影

https://www.npmjs.com/package/google-libphonenumber

// Require `PhoneNumberFormat`. 
var PNF = require('google-libphonenumber').PhoneNumberFormat; 

// Get an instance of `PhoneNumberUtil`. 
var phoneUtil = require('google-libphonenumber').PhoneNumberUtil.getInstance(); 

// Parse number with country code. 
var phoneNumber = phoneUtil.parse('202-456-1414', 'US'); 

// Print number in the international format. 
console.log(phoneUtil.format(phoneNumber, PNF.INTERNATIONAL)); 
// => +1 202-456-1414 
関連する問題