在FOCUS上使用Javascript自动短划线(用于电话号码格式)

xir*_*epe 6 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);
});
Run Code Online (Sandbox Code Playgroud)

前两个块很好,但如何限制最后一个块接受4位数?

如果到目前为止有3个数字,它仍然是自动划线.

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

red*_*exp 8

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

$('.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, '')
    ;
});
Run Code Online (Sandbox Code Playgroud)


Ani*_*dha 4

foo = foo.match(new RegExp('.{1,4}$|.{1,3}', 'g')).join("-");
Run Code Online (Sandbox Code Playgroud)