Javascript 字符串返回语句JS

Javascript 字符串返回语句JS,javascript,conditional,Javascript,Conditional,我正在做一个JS练习,它是半工作的,但当最后一个条件满足时,它不会返回语句,只返回一组空括号。我不太清楚为什么,但任何帮助都是感激的 function isItANum(str) { var phonenum = str.replace(/[^0-9]+/g,""); if(str.length===11 && str.indexOf(0)===0) { str = str; } else if (str.match(/[a-z]/i)) { st

我正在做一个JS练习,它是半工作的,但当最后一个条件满足时,它不会返回语句,只返回一组空括号。我不太清楚为什么,但任何帮助都是感激的

function isItANum(str) {
  var phonenum = str.replace(/[^0-9]+/g,"");

  if(str.length===11 && str.indexOf(0)===0) {
    str = str;

  } else if (str.match(/[a-z]/i)) {
    str = phonenum;

  } else {
    str = "Not a phone number";
  }

  return str;
}

isItANum("hey");

只需按顺序逐步完成计算

首先,
hey
中没有数字,因此变量
phonenum
到达
str.replace(/[^0-9]+/g,”)时会被替换为空字符串

其次,检查长度是否为
11
,以及第一个字符是否不是
0
。这会失败,因此如果
,它将进入
else

第三,
hey
匹配regex
/[a-z]/i
,因此
str
设置为
phonenum

第四,
str
(现在是
phonenum
)返回,是一个空字符串

要实际返回
“不是电话号码”
,只需完全删除
,否则将
删除;非数字将被第一个正则表达式剥离。这样,当
if
失败时,它将直接转到
else
。您可以在同一条件下组合长度和起始
0
验证

请注意,您可能实际上正在查找regex
/^[a-z]/i
,以确保它只包含小写字符(请注意起始字符)。值得一提的是,第一个
if
计算是不必要的,因为
str
已经完全等于
str

可将其改写为以下内容:

函数isItANum(str){
var phonenum=str.replace(/[^0-9]+/g,”);
如果(str.length==11&&str.indexOf(0)==0&&str.match(/[^a-z]/i)){
str=phonenum;
}否则{
str=“不是电话号码”;
}
返回(str);
}
console.log(isItANum(“嘿”);
控制台日志(isItANum(“111111111”);

控制台日志(isItANum(“011111111”)在第二个if处,变量str已经等于“”。因此,如果str没有任何号码,且str的值等于“”,则需要添加另一个,因为它不是电话号码

函数isItANum(str){
var phonenum=str.replace(/[^0-9]+/g,”);
if(str.length==11&&str.indexOf(0)==0){
str=str;
} 
else if(str.match(/[a-z]/i)){
str=phonenum;
} 
如果(str==''){
str=“不是电话号码”;
}
console.log(str);
返回str;
}

伊斯塔努姆(“嘿”)太棒了!很高兴听到这个解决方案似乎对您有所帮助。一旦您确认此解决方案解决了您的问题,请不要忘记通过单击投票按钮下方的灰色复选框将此解决方案标记为正确,这会将其从“未回答问题”队列中删除,并为提问者和回答问题者授予声誉。当然,说这句话,你没有义务将我的答案(或任何其他答案)标记为正确,尽管这确实有助于保持事情的顺利进行:)