2017-08-21 7 views
2

私のDBには電話番号[1-123-456-7890]がたくさんありました。私がしなければならないことは、電話番号から別の国のダイヤルコード[ここでは1つは米国/カナダのものです]です。国コードフォームの分離方法電話番号?

私が試みたのは、すべての国のjsonリストを作成しました。ページを読み込むときに、電話番号と国コードを分けました。 「+」で始まる電話番号や電話番号に6〜7桁しかない電話番号(この場合は国番号はありません)を取得するまでうまくいきました。

GoogleのGeoName APIを試しましたが、期待していたものが返されません。私は電話番号から国番号を取得するAPIを見つけることができませんでした。

+0

? – christopher

+0

UIの目的のために、より良いUX – Joomler

+0

のためのダイヤルコードで国リストを追加したいのですが、この場合は簡単な答えはありません、私は正規表現でカントリーコードを捕まえることに行きますが、あなたが操作したいフォーマットは – Kejt

答えて

3

これは非常に複雑な問題の1つです。 libphonenumber-jsのようなライブラリを使うことをお勧めします。デフォルトでは、米国の国コードを使用して、私は少しヘルパー関数を作成し

、:あなたは電話番号から国コードを分けたいのはなぜ

function getCountryCode(input) { 
 
    // Set default country code to US if no real country code is specified 
 
    const defaultCountryCode = input.substr(0, 1) !== '+' ? 'US' : null; 
 
    let formatted = new libphonenumber.asYouType(defaultCountryCode).input(input); 
 
    let countryCode = ''; 
 
    let withoutCountryCode = formatted; 
 
    
 
    if (defaultCountryCode === 'US') { 
 
    countryCode = '+1'; 
 
    formatted = '+1 ' + formatted; 
 
    } 
 
    else { 
 
    const parts = formatted.split(' '); 
 
    countryCode = parts.length > 1 ? parts.shift() : ''; 
 
    withoutCountryCode = parts.join(' '); 
 
    } 
 
    
 
    return { 
 
    formatted, 
 
    withoutCountryCode, 
 
    countryCode, 
 
    } 
 
} 
 

 
console.log(getCountryCode('1-123-456-7890')); 
 
console.log(getCountryCode('+12133734')); 
 
console.log(getCountryCode('+49300200100')); 
 
console.log(getCountryCode('621234567'));
<script src="https://cdnjs.cloudflare.com/ajax/libs/libphonenumber-js/0.4.27/libphonenumber-js.min.js"></script>

+0

** 621234567 **のような番号の場合* 621234567 *コード – Joomler

+0

さて、私はちょうどそれも実現しました。私は小さな例をより複雑な関数に変換しました。これで、フォーマットされた番号と国コードも含まれるオブジェクトが返されます。 – lumio

関連する問題