字符串return语句JS

String return statement JS

我正在做一个 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 if.

第三,hey匹配正则表达式/[a-z]/i,所以str设置为phonenum.

第四,str(现在是phonenum)得到returned,是一个空字符串。

实际上 return "Not a phone number",只需完全删除 else if;非数字将已经被第一个正则表达式剥离。这样,当 if 失败时,它将直接进入 else。您可以将长度和起始 0 验证组合在同一个条件中。

请注意,您实际上可能正在寻找正则表达式 /^[a-z]/i 以确保它仅包含小写字符(注意起始克拉)。而且就其价值而言,第一个 if 计算是不必要的,因为 str 已经 完全等于 str.

这可以改写如下:

function isItANum(str) {
  var phonenum = str.replace(/[^0-9]+/g,"");
  if (str.length === 11 && str.indexOf(0) === 0 && str.match(/[^a-z]/i)) {
    str = phonenum;
  } else {
    str = "Not a phone number";
  }
  return(str);
}

console.log(isItANum("hey"));
console.log(isItANum("111111111"));
console.log(isItANum("01111111111"));

希望对您有所帮助! :)

在第二个 if 处,变量 str 已经等于 "" 。因此,如果 str 没有任何数字并且 str 的值等于“”,则需要添加另一个,它不是 phone 数字。

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;
} 

if (str === '') {
  str = "Not a phone number";
}
console.log(str);
return str;
}

isItANum("hey");