Javascript正则表达式在每第3个和第4个字符后添加破折号 [英] Javascript Regular Expression to add dash after every 3rd and 4th characters

查看:89
本文介绍了Javascript正则表达式在每第3个和第4个字符后添加破折号的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

以下正则表达式:

x.toString().replace(/\B(?=(?:\d{3})+(?!\d))/g, "-"); 

在每个第3 个字符后添加破折号,因此输入的123456789变为123-456-789. 我正在尝试使用此正则表达式来格式化电话号码.问题出现在第10个字符上.这样输入的1234567890就会变成1-234-567-890.

adds dash after each 3rd character so entered 123456789 turns into 123-456-789. Im trying to use this regex to format phone number. The problem arises on the 10th character. So entered 1234567890 turns into 1-234-567-890.

我将如何修改上述正则表达式以将具有10位数字的字符串转换为123-456-7890.我使用此正则表达式,是因为这种情况是在用户输入 keyup 事件时发生的.

How would I modify the above regex to turn strings that have 10 digits into 123-456-7890. I use this regex because this happens as user is typing in uses keyup event.

如果您知道更简便或更好的方法,请帮助我,用户输入时必须添加破折号.不允许使用其他字符.

If you know easier or better way of doing this please help me out, dashes has to be added while user is typing in. No other characters allowed.

注释:

  1. 不能使用Jquery Masked输入插件(因为如果编辑中间字符会弄乱焦点)

推荐答案

如何

> "12345678".match(/\d{3}(?=\d{2,3})|\d+/g).join("-")
"123-456-78"
> "123456789".match(/\d{3}(?=\d{2,3})|\d+/g).join("-")
"123-456-789"
> "1234567890".match(/\d{3}(?=\d{2,3})|\d+/g).join("-")
"123-456-7890"

这篇关于Javascript正则表达式在每第3个和第4个字符后添加破折号的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆