我正在使用正则表达式的match
函数。
我使用的代码是:
if(val.match(/^s+$/) || val == "" )
然而,它会产生以下错误: "val.match is not function"
什么是问题?我正在使用正则表达式的match
函数。
我使用的代码是:
if(val.match(/^s+$/) || val == "" )
然而,它会产生以下错误: "val.match is not function"
什么是问题?我认为val
不是一个字符串。
我遇到了以下错误:
val.match 不是函数
这是由以下代码引起的。
var val=12;
if(val.match(/^s+$/) || val == ""){
document.write("success: " + val);
}
如果您显式地将变量转换为字符串String(val),该错误就会消失。
var val=12;
if(String(val).match(/^s+$/) || val == ""){
document.write("success: " + val);
}
如果您使用字符串,则无需进行转换。
var val="sss";
if(val.match(/^s+$/) || val == ""){
document.write("success: " + val);
}
问题是: val不是字符串
我可以想到两个选项 1) 转换为字符串: 如果您确定val必须是字符串,则可能是一个好选择
"与上面的答案相同"
var val=12;
if(String(val).match(/^s+$/) || val == ""){
document.write("success: " + val);
}
2) 跳过该行:在我的情况下,最好只检查val的类型,如果不是字符串,则跳过该行,因为运行“match”函数并不是一个好主意。
val = 12;
if( val.match) {
if(val.match(/^s+$/) || val == "" ) {
document.write("success: " + val);
}
} else {
document.write("not a string: " + val);
}
注意:根据我的评论,将此作为答案。
确保val被定义并且是字符串。另外,我猜测你在正则表达式中的 's' 前面没有加斜杠是一个打字错误。如果是这种情况,你可以用 "if(val.match(/^\s*$)" 替换你的 if 测试。
val
的地方?确保val
是一个字符串:val.toString()
。或者您可以使用Regex.exec来隐式转换为字符串:/^s+$/.exec(val)
。 - Reid