将破折号添加到用户输入的特定数字

时间:2017-05-19 19:46:04

标签: javascript jquery regex

我确实在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);
}); 

2 个答案:

答案 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);
}); 

演示:https://jsfiddle.net/oohfksjd/

答案 1 :(得分:-1)

这是更多的RegExp问题,而不是JavaScript。

RegExp('(.{1,4})(.{1,7})(.{1,3})(.{1,1})', 'g')