题目要求查验电话号码是否输入正确,总结来说,需要满足以下条件:
- 号码中的数字应该在10-13个之间
- 不包含()-以外的符号
- ()要完整
- 可以有空格
- 如果最前面加了国家编号,限定编号为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"));
标签:查验,return,else,fCC,str,strB,join,JS,match From: https://www.cnblogs.com/mtlog/p/16907831.html