题目要求查验电话号码是否输入正确,总结来说,需要满足以下条件:

  1. 号码中的数字应该在10-13个之间
  2. 不包含()-以外的符号
  3. ()要完整
  4. 可以有空格
  5. 如果最前面加了国家编号,限定编号为1

 

 

关键点:

1 正则表达式

2. 字符串方法string.join(”)

可以将.match()得到的数组转换回字符串。

3.可选链运算符(?.)

可选链运算符(?.)允许读取位于连接对象链深处的属性的值,而不必明确验证链中的每个引用是否有效。

 

添加?后,变成const strB = strNS.match(/[()]/g)?.join(”);就不会报错了。

 

实现代码:

function telephoneCheck(str) {
  //排除str中的空格
  const strNS = str.match(/\S/ig).join('');
  //str中的数字
  const allNum = str.match(/\d/ig).join('');
  //排除str中的空格和()
  const strNSB = strNS.match(/-*\d-*/g).join('');


  const strB = strNS.match(/[()]/g)?.join('');
  
  console.log(strB);
  console.log(strB === null );
  console.log(strNSB.match(/^1[1-9]{3}-*\d{3}-*\d{4}/g))


  if (strB ==='()'){
    if (allNum.length === 10) {
      return strNSB.match(/^[1-9]{3}-*\d{3}-*\d{4}/g) !== null;
    } else if (allNum.length === 11) {
      return strNSB.match(/^1[1-9]{3}-*\d{3}-*\d{4}/g) !== null;
    }else {
    return false;}
  } else if (strB === undefined) {
    if (allNum.length === 10) {
      return strNSB.match(/^[1-9]{3}-*\d{3}-*\d{4}/g) !== null;
    } else if (allNum.length === 11) {
      return strNSB.match(/^1[1-9]{3}-*\d{3}-*\d{4}/g) !== null;
    }else {
    return false;}
  } else {
    return false;
  }
}


console.log(telephoneCheck("-1 (757) 622-7382"));

 

 

原文地址:http://www.cnblogs.com/mtlog/p/16907831.html

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长! 2. 分享目的仅供大家学习和交流,请务用于商业用途! 3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入! 4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解! 5. 如有链接无法下载、失效或广告,请联系管理员处理! 6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需! 7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员! 8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载 声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性