1. ホーム
  2. javascript

[解決済み] Javascriptで米国の電話番号を再フォーマットするための正規表現

2022-03-04 05:07:38

質問

電話番号をJavascriptで表示するために再フォーマット(検証ではなく置換)したいのですが、検証のためのリファレンスがたくさんあります。以下はデータの例です。

  • 123 4567890
  • (123) 456-7890
  • (123)456-7890
  • 123 456 7890
  • 123.456.7890
  • (空白/null)
  • 1234567890

正規表現を使って簡単にできる方法はないでしょうか?一番いい方法を探しています。もっと良い方法はないでしょうか?

数字を以下のように再フォーマットしたいのですが。 (123) 456-7890

どのように解決するのですか?

仮に、" (123) 456-7890 "です。

function formatPhoneNumber(phoneNumberString) {
  var cleaned = ('' + phoneNumberString).replace(/\D/g, '');
  var match = cleaned.match(/^(\d{3})(\d{3})(\d{4})$/);
  if (match) {
    return '(' + match[1] + ') ' + match[2] + '-' + match[3];
  }
  return null;
}

以下は、オプションの +1 国際コード

function formatPhoneNumber(phoneNumberString) {
  var cleaned = ('' + phoneNumberString).replace(/\D/g, '');
  var match = cleaned.match(/^(1|)?(\d{3})(\d{3})(\d{4})$/);
  if (match) {
    var intlCode = (match[1] ? '+1 ' : '');
    return [intlCode, '(', match[2], ') ', match[3], '-', match[4]].join('');
  }
  return null;
}
formatPhoneNumber('+12345678900') // => "+1 (234) 567-8900"
formatPhoneNumber('2345678900')   // => "(234) 567-8900"