以下正则表达式:
x.toString().replace(/\B(?=(?:\d{3})+(?!\d))/g, "-");
在每个 3rd 字符后添加破折号,因此输入 123456789
变成 123-456-789
。
我正在尝试使用此正则表达式来格式化电话号码。问题出现在第 10 个字符上。所以输入1234567890
变成了1-234-567-890
。
我将如何修改上述正则表达式以将具有 10 位数字的字符串转换为 123-456-7890
。我使用这个正则表达式是因为当用户输入时会发生这种情况使用 keyup 事件。
如果您知道更简单或更好的方法,请帮助我,用户输入时必须添加破折号。不允许使用其他字符。
注意事项:
- 不能使用 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 个字符后添加破折号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16598470/