javascript - Auto correct phone format input - Stack Overflow

I'm trying to auto format an input on HTML with javascript, and it is almost done, i need the form

I'm trying to auto format an input on HTML with javascript, and it is almost done, i need the format to be xxx-xxx-xxxx but and I have this code

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

as youy can see it will just auto format xxx-xxx-xxx but I need to be 4 digits at the end

any sugestions?

I'm trying to auto format an input on HTML with javascript, and it is almost done, i need the format to be xxx-xxx-xxxx but and I have this code

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

as youy can see it will just auto format xxx-xxx-xxx but I need to be 4 digits at the end

any sugestions?

Share Improve this question edited Apr 9, 2014 at 20:05 kei 20.5k2 gold badges37 silver badges64 bronze badges asked Apr 9, 2014 at 19:57 user3516479user3516479 114 bronze badges
Add a ment  | 

4 Answers 4

Reset to default 4

Try this regexp:

'1234567890'.replace(/(\d{3}(?!\d?$))\-?/g, '$1-'); // 123-456-7890

The part (?!\d?$) is a negative lookahead. It allows regular expression to match three digits only if they are not followed by another number (4th) (but not necessarily ?) at the end of the string $.

So it will not match 789 group because it's followed by 0$.

Or simply : .replace(/(\d{3})(\d{3})(\d{4})\-?/g,'$1-$2-$3');

Sample code to help you out:

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
}

there seems to be a bug in the "replace" regex's above. enter a 10 digit number and you see it formatted correctly (e.g. "(123) 456-7890"). Then, select the contents of the field (double or triple click it) and overtype the value. You'll see the first two digits get transposed. So if you enter 1 2 3, you'll see 2 1 3...

发布者:admin,转转请注明出处:http://www.yc00.com/questions/1745660009a4638777.html

相关推荐

  • javascript - Auto correct phone format input - Stack Overflow

    I'm trying to auto format an input on HTML with javascript, and it is almost done, i need the form

    11小时前
    10

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信