如何扩展此正则表达式以匹配此掩码?

时间:2014-11-21 12:20:52

标签: javascript regex formatting

我找到了以下解决方案,用于在每第4个字符后添加短划线:

$('.number_to_format').keyup(function() {
  var foo = $(this).val().split("-").join("");
  if (foo.length > 0) {
      foo = foo.match(new RegExp('.{1,4}', 'g')).join("-");
  }
  $(this).val(foo);
});

但是我有一个更难解决的问题,我的输入应该与我输入的数字完全匹配:

99999999-9-99

所以自动在第8和第9个字符后加上破折号。

我已经尝试过jQuery masking插件,但我想要没有插件的解决方案。

我应该如何扩展上面的正则表达式以使其正常工作?感谢

1 个答案:

答案 0 :(得分:1)

(输出将为99999999-9-99)

<input type="text"  id="data">

$(document).ready(function ()
$('#data').keyup(function () {
    var x = $(this).val();
    console.dir(x);
    x = x.replace(/[^0-9]/gi, '');
    if (x.length > 9) x = x.replace(/(\d{8})(\d)(\d+)/, '$1-$2-$3');
    else if (x.length > 8) x = x.replace(/(\d{8})(\d+)/, '$1-$2');
    else x = x;
    $(this).val(x);
});
});

Demo here