我正在尝试使用javascript自动格式化HTML上的输入,它几乎完成了,我需要格式为xxx-xxx-xxxx但是我有这个代码
this.value = this.value.replace(/(\d{3})\-?/g,'$1-');
你可以看到它只会自动格式化xxx-xxx-xxx但我最后需要4位数
任何sugestions?
答案 0 :(得分:4)
试试这个正则表达式:
'1234567890'.replace(/(\d{3}(?!\d?$))\-?/g, '$1-'); // 123-456-7890
部分(?!\d?$)
是一个负面的预测。它允许正则表达式只有在字符串?
末尾没有后跟另一个数字(第4个)(但不一定是$
)时才能匹配三个数字。
因此它与789
组不匹配,因为它后跟0$
。
答案 1 :(得分:2)
或者只是:。replace(/(\d{3})(\d{3})(\d{4})\-?/g,'$1-$2-$3');
答案 2 :(得分:1)
示例代码可以帮助您:
var phone = '(555) 666-7777';
// First clean your input
phone = phone.replace(/[^\d]/g, '');
// Check the length of the phone
if(phone.length == 10){
// Now we can format the phone
phone = phone.substring(0,3)+'-'+phone.substring(3,6)+'-'+phone.substring(6, 10);
// Optionally
//phone = phone.replace(/(\d{3})(\d{3})/, '$1-$2-');
}
else {
// whatever you want to tell the user
}
答案 3 :(得分:1)
上面的“替换”正则表达式中似乎存在一个错误。输入一个10位数字,你会看到它格式正确(例如“(123)456-7890”)。然后,选择该字段的内容(双击或三击它)并改写该值。你会看到前两个数字被转置。所以如果你输入1 2 3,你会看到2 1 3 ...