自动更正手机格式输入

时间:2014-04-09 19:57:12

标签: javascript jquery html regex

我正在尝试使用javascript自动格式化HTML上的输入,它几乎完成了,我需要格式为xxx-xxx-xxxx但是我有这个代码

this.value = this.value.replace(/(\d{3})\-?/g,'$1-');

你可以看到它只会自动格式化xxx-xxx-xxx但我最后需要4位数

任何sugestions?

4 个答案:

答案 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 ...