我正在嘗試使用此鏈接中的示例進行電話屏蔽,但沒有成功。我想做的是洗掉括號并重新排序。
規則:第一個字符總是5。 以3 3 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');
}
很抱歉在第一篇文章中誤報了塊。完成后不允許輸入新的字符。
塊將如下:3 3 2 2 / 示例:532 123 45 67
uj5u.com熱心網友回復:
有一個更簡單的方法:
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');
uj5u.com熱心網友回復:
正則運算式可能很棘手,但我喜歡結果有多好:)
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, '') - 開頭只允許 5,所以用空字串替換第一個不是 5 的數字:
.replace(/(^[^5])/, '') - 分成 2 個組:第一個有 3 位數字,并在它們之間添加一個空格:
.replace(/(\d{3})(\d)/, '$1 $2') - 新建 2 個組:第一個有 4 個數字,第二個有一個或兩個數字,并在它們之間添加一個空格。由于上一步按 3 分組,此步驟將僅影響新數字:
.replace(/(\d{4})(\d{1,2})/, '$1 $2') - 將其他人分成 2 組:第一個有 4-space-2-digits,第二個有一個或兩個數字,并在它們之間添加一個空格:
.replace(/(\d{4}\s\d{2})(\d{1,2})/, '$1 $2') - 為防止添加更多數字,在序列 4-space-2-space-2-digits 完成后,結束字串:
.replace(/(\d{4}\s\d{2}\s\d{2})\d ?$/, '$1')
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/373278.html
標籤:javascript 查询 面具
