Javascript Regular Expression在每个第3个和第4个字符后添加破折号

GGi*_*Gio 4 javascript regex jquery

以下正则表达式:

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

加破折号后每3性格让输入123456789变成123-456-789.我试图用这个正则表达式来格式化电话号码.问题出现在第10个字符上.所以进入1234567890变成了1-234-567-890.

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

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

笔记:

  1. 不能使用Jquery Masked输入插件(因为如果编辑中间字符,它的焦点会搞砸)

geo*_*org 11

怎么样

> "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"
Run Code Online (Sandbox Code Playgroud)