javascript - 在 FOCUS 上使用 Javascript 的 Auto Dash(电话号码格式)

标签 javascript regex

试图实现这种格式的自动破折号 XXX-XXX-XXXX

这是我目前所拥有的:

$('.telnumber').keyup(function() {
  var foo = $(this).val().split("-").join(""); // remove hyphens
  foo = foo.match(new RegExp('.{1,3}', 'g')).join("-");
  $(this).val(foo);
});

前 2 个 block 没问题,但如何限制最后一个 block 接受 4 位数字?

到现在有3位还是自动破折号。

我不擅长 REGEX,所以任何想法都会受到赞赏。

最佳答案

在这里我认为最好的解决方案。任何非数字字符都将被忽略,最后不会有额外的破折号。

$('.telnumber').keyup(function() {
    this.value = this.value
        .match(/\d*/g).join('')
        .match(/(\d{0,3})(\d{0,3})(\d{0,4})/).slice(1).join('-')
        .replace(/-*$/g, '')
    ;
});

关于javascript - 在 FOCUS 上使用 Javascript 的 Auto Dash(电话号码格式),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19112011/

相关文章:

javascript - 无法在包含的jsp中获取jSTL变量

regex - 组合多个 sed 命令

javascript - 如何在 Javascript 中找到与正则表达式匹配的属性?

c# - 如何使用正则表达式拆分字符串

javascript - Sidenav 覆盖固定在右上角

javascript - 如何在 HTML/CSS/JS 中为表/列表应用行虚拟化?

javascript - 流量: conditional function response type

regex - Perl 正则表达式——使用 eval 进行动态替换,替换中使用文字 $1

java - 使用单个replaceAll 审查选定的单词(用**** 替换它们)?

php - 使用 innerhtml 编写带有大量引号的 html