Javascript 正则表达式在每第 3 个和第 4 个字符后添加破折号

标签 javascript jquery regex

以下正则表达式:

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

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

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

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

注意事项:

  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 个字符后添加破折号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16598470/

相关文章:

javascript - 可以使用对象方法来创建对象吗?

jquery - 将类添加到除按钮之外的所有输入类型,使用 jquery 提交和重置

jquery - 根据单击的 link_to 渲染部分内容

java - 想要一个用于验证印度车辆号码格式的正则表达式吗?

javascript - HTML post php 变量以形成附加数据

javascript - 使用 Javascript 使用 Web 服务

javascript - jQuery onClick 通过 GET 将变量传递给 URL 并加载该 URL

javascript - sort() 函数不起作用

R "eats"字符串中的正则表达式

C# 正则表达式和美元符号