字符串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");
我正在做一个 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");