Javascriptで表示するために電話番号を再フォーマットする方法を探しています。ここでは、データの一部の例です:文字列を特定のフォーマットにフォーマットする
00-22 345 991
12450から123948
私のような以下の3つの長さの形式に番号を再フォーマットする:555-922-134
ダッシュとスペースを無視することができ、最後の2つのブロックが同様に2の長さとすることができると仮定すると:002-234-59-91
又は124-501-349-48
Javascriptで表示するために電話番号を再フォーマットする方法を探しています。ここでは、データの一部の例です:文字列を特定のフォーマットにフォーマットする
00-22 345 991
12450から123948
私のような以下の3つの長さの形式に番号を再フォーマットする:555-922-134
ダッシュとスペースを無視することができ、最後の2つのブロックが同様に2の長さとすることができると仮定すると:002-234-59-91
又は124-501-349-48
ルックアヘッドで正規表現を使用することができます。
Positive Lookaheadは、等号の後にパターンを探しますが、一致するパターンには含まれません。 'X' は 'Y' が続いている場合にのみ
X(?= Y)
マッチ 'X'。これは先読みと呼ばれています。
たとえば、
/Jack(?=Sprat)/
は、「Sprat」の後にのみ「Jack」と一致します。/Jack(?=Sprat|Frost)/
は、 'Sprat'または 'Frost'の後にのみ 'Jack'と一致します。しかし、「Sprat」も「Frost」も一致結果の一部ではありません。
function format(s) {
return s.toString().replace(/\D/g, '').replace(/\d{2,3}(?=..)/g, '$&-');
}
console.log(format('00-22 345 991'));
console.log(format('555922134'));
console.log(format('12450-123948'));
console.log(format(123456789));
console.log(format(12345678901));
console.log(format(1234567));