2017-03-01 78 views
-2

我輸入了一個隨機英國電話號碼(「015395 30612」)。我想創建一個函數讓我們說phoneBeautifier(字符串){},這將輸出相同的字符串,但使它看起來「美麗」。例如,輸出可能是:+44(0)1539 530612Javascript UK電話號碼美化者

與正則表達式我很糟糕,有沒有其他方法?

+0

你能解釋一下號碼的格式?如果可以驗證,可以將其格式化......不熟悉英國的數字。 – bryc

+0

+44是國家代碼。從英國以外打電話時,您減去0.在英國境內打電話時,您知道需要更長的時間,但您需要前面的0到01539 530612. 1539我猜是代碼。 – Bobys

+0

試試更好的控制和實用程序。它基於Google的libphonenumber庫。 https://github.com/albeebe/phoneformat.js?files=1 – Adapter

回答

2

var phoneNumber="015395 30612"; 
 
function format(phoneNumber) { 
 
    return phoneNumber.replace(/\s+/g, '').replace(/(.)(\d{4})(\d)/, '+44 ($1)$2 $3'); 
 
} 
 
['015395 30612','01539530612'].forEach(function(phoneNumber){ 
 
    console.log(format(phoneNumber)); 
 
});

你可以嘗試格式(..)方法instead.this功能支持所有的情況。

+0

謝謝holi-java。有用!這似乎是一個正則表達式。正如我所說的,我對它很不好。你有可能給我一個關於它如何工作的解釋嗎? – Bobys

+0

請注意,這適用於問題中的確切輸入,但不適用於其他任何內容。它不會爲沒有空間的「01539530612」做任何事情。 – JJJ

+0

是的,正則表達式只支持你的問題,而你沒有提供所有的要求,所以它在情況上失敗了。 –

0

嘗試這樣:

function phoneBeautifier(number) { 
 
    return number.replace(/^(\d)(\d{5})\s*(\d{5})/, '+44 ($1)$2 $3'); 
 
} 
 
var beautifulPN = phoneBeautifier("01539530612"); 
 
console.log(beautifulPN);