我在電話號碼上應用電話號碼屏蔽。我想確保一開始沒有 1,如果有,請洗掉它。最好的方法是什么?
self.phoneNumberMasking = function (data) {
if (data != "" && data != null) {
var x = data.replace(/\D/g, '').match(/(\d{3})(\d{3})(\d{4})/);
data = ' 1(' x[1] ')' x[2] '-' x[3];
return data;
}
return data;
}
由于我沒有洗掉或替換上述代碼中的 1,因此當我嘗試將掩碼應用于其中已經包含 1 的數字時,它會添加另一個 1。
uj5u.com熱心網友回復:
您可以使用String.prototype.startsWith()來檢查輸入是否以 開頭" 1",如果是,則在進一步處理之前將其洗掉:
function validate (input) {
let str = input.trim();
if (str.startsWith(' 1')) str = str.slice(2);
str = str.replaceAll(/\D/g, '');
if (str.length !== 10) throw new Error('Invalid input');
return ` 1(${str.slice(0, 3)})${str.slice(3, 6)}-${str.slice(6)}`;
}
const inputs = [
' 11234567890',
'1234567890',
' 1 123.456.7890',
' 1 123 456 7890',
'1 123 456 7890',
];
for (const input of inputs) {
try {
const result = validate(input);
console.log(input, result);
}
catch (err) {
console.error(input, err.message);
}
}
uj5u.com熱心網友回復:
修改了您的“替換正則運算式”以替換字串開頭的“ 1”。
請檢查。
self.phoneNumberMasking = function (data) {
if (data != "" && data != null) {
// var x = data.replace(/\D/g, '').match(/(\d{3})(\d{3})(\d{4})/);
var x = data.replace(/(^\ 1|\D)/g, '').match(/(\d{3})(\d{3})(\d{4})/);
data = ' 1(' x[1] ')' x[2] '-' x[3];
return data;
}
return data;
}
uj5u.com熱心網友回復:
你不需要使用replace()你只需要一個更好的正則運算式,因為它基本上只捕獲最后 10 位數字(在正確的分組中),因此它將在開始
/(\d{3})\D*(\d{3})\D*(\d{4})$/
時忽略。用于除錯的好工具是 regex101。' 1'$
let phoneNumberMasking = function(data) {
if (data != "" && data != null) {
var x = data.match(/(\d{3})\D*(\d{3})\D*(\d{4})$/);
data = ' 1(' x[1] ')' x[2] '-' x[3];
return data;
}
return data;
}
console.log(phoneNumberMasking('2345678910'))
console.log(phoneNumberMasking(' 1(234) 567 - 8910'))
console.log(phoneNumberMasking(' 1-234-567-8910'))
console.log(phoneNumberMasking('area code:[234] phone number: 567_8910'))
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/493513.html
標籤:javascript 掩蔽
