[英]Phone Number Masking (Without Plugin)
我正在嘗試使用此鏈接中的示例進行電話屏蔽,但沒有成功。我想要做的是刪除括號並重新排序。
規則:第一個字符始終為 5。形式為 3 4 2 2,例如:532 123 45 67
在此先感謝您的幫助。
const $input = document.querySelector('[data-js="input"]')
$input.addEventListener('input', handleInput, false)
function handleInput (e) {
e.target.value = phoneMask(e.target.value)
}
function phoneMask (phone) {
return phone.replace(/\D/g, '')
.replace(/^(\d)/, '($1')
.replace(/^(\(\d{3})(\d)/, '$1) $2')
.replace(/(\d{3})(\d)/, "$1-$2")
.replace(/(-\d{4})\d+?$/, '$1');
}
有一個更簡單的方法:
1-刪除任何非數字字符
2-將數字格式化為“3 4 2 2”(或任何其他方式)
phone = '+ (123) 45678901';
phone = phone.replace(/[^0-9]+/gim, '');
phone = phone.replace(/^([0-9]{3})([0-9]{4})([0-9]{2})([0-9]{2})$/, '$1 $2 $3 $4');
正則表達式可能很棘手,但我喜歡結果有多好:)
function phoneMask (phone) {
return phone.replace(/\D/g, '')
.replace(/(^[^5])/, '')
.replace(/(\d{3})(\d)/, '$1 $2')
.replace(/(\d{4})(\d{1,2})/, '$1 $2')
.replace(/(\d{4}\s\d{2})(\d{1,2})/, '$1 $2')
.replace(/(\d{4}\s\d{2}\s\d{2})\d+?$/, '$1')
}
解釋步驟:
.replace(/\D/g, '')
.replace(/(^[^5])/, '')
.replace(/(\d{3})(\d)/, '$1 $2')
.replace(/(\d{4})(\d{1,2})/, '$1 $2')
.replace(/(\d{4}\s\d{2})(\d{1,2})/, '$1 $2')
.replace(/(\d{4}\s\d{2}\s\d{2})\d+?$/, '$1')
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.