我确实在jQuery中找到了这个函数,它在四个数字之后添加了一个破折号,但我想在用户输入的数字上添加一个破折号,其格式如下:
1234-1234556-123-1
但我可以设法得到它,请你帮我,这是格式化以下的jQuery函数:1234-1234-1234-1
$('.creditCardText').keyup(function() {
var foo = $(this).val().split("-").join(""); // remove hyphens
if ((foo.length > 0) && (foo.length < 14)) {
foo = foo.match(new RegExp('.{1,4}', 'g')).join("-");
}
$(this).val(foo);
});
答案 0 :(得分:4)
您需要使用括号匹配组。将模式放在括号中。这将返回一个包含整个匹配的数组,然后是括号匹配,后跟一些匹配信息。因此,您必须切出数组元素1-4,然后用破折号连接它们。由于某些匹配项可能为空,因此您可以使用另一个删除尾随破折号的替换清理:
修改:您还可以删除所有非数字字符,而不仅仅是连字符。 (见第二行)
$('.creditCardText').keyup(function() {
var foo = $(this).val().replace(/\D/g, ""); // remove non-numerics
if ((foo.length > 0) && (foo.length < 16)) {
foo = foo.match(new RegExp('(\\d{1,4})(\\d{0,7})(\\d{0,3})(\\d?)')).slice(1,5).join("-").replace(/\-+$/, '');
}
$(this).val(foo);
});
答案 1 :(得分:-1)
这是更多的RegExp问题,而不是JavaScript。
RegExp('(.{1,4})(.{1,7})(.{1,3})(.{1,1})', 'g')