手机字段可以有10位数字,如果更大则删除破折号

时间:2017-11-01 17:46:58

标签: javascript

有谁知道如何正确设置重点关注的电话号码格式 1-777-777-7777?当我在表单字段中输入我的电话号码时,该号码的位置如下:“777-777-777”。如何将数字定位为“1-777-777-7777”并删除更大的破折号。

以下是我的尝试。我格式化了电话号码,并验证了可以通过验证的一定数量的号码。请让我知道我做错了什么。感谢您的时间。我见过其他形式,但没有特别按照这个问题的要求。如果有人有资源随时提供。

function phoneFormat(input) {
  // Strip all characters from the input except digits
  input = input.replace(/\D/g, '');

  // Based upon the length of the string, we add formatting as necessary
  var size = input.length;
  if (size == 0) {
    input = input;
  } else if (size < 4) {
    input = '(' + input;
  } else if (size < 7) {
    input = '(' + input.substring(0, 3) + ') ' + input.substring(3, 6);
  } else if (size < 10) {
    input = '(' + input.substring(0, 3) + ') ' + input.substring(3, 6) + '-' + input.substring(6, 10);
  } else {
    input = input
  }
  return input;
}

function validatePhone(phoneNumber) {
  var phoneNumberPattern = /^\(?(\d{3})\)?[- ]?(\d{3})[- ]?(\d{4})$/;
  if (phoneNumber == "") {
    return false;
  } else {
    return phoneNumberPattern.test(phoneNumber);
  }
}

1 个答案:

答案 0 :(得分:0)

我认为我的处理方式有点不同,就像这样。

&#13;
&#13;
const re_notADigit = /\D/g;
const re_stripTrailing = /[-)(]+$/g;

function phoneFormat(val) {
  let input = val.replace(re_notADigit, '');
  let size = input.length;

  if (size >= 11) {
    input = input.slice(0, 11);
    size = 11;
  }

  let prefix = "";
  if (size === 11) {
    prefix = input[0] + "-";
    input = input.slice(1);
  }

  return `${prefix}(${input.slice(0,3)})-${input.slice(3,6)}-${input.slice(6)}`
            .replace(re_stripTrailing, "");
}
&#13;
Enter phone number: <input oninput="value=phoneFormat(value)">
&#13;
&#13;
&#13;