我找到了以下解决方案,用于在每第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插件,但我想要没有插件的解决方案。
我应该如何扩展上面的正则表达式以使其正常工作?感谢
答案 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);
});
});