【JS】查验电话号码(fCC)

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

  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"));

 

 

posted @ 2022-11-20 05:09  dake0913  阅读(153)  评论(0)    收藏  举报