Javascript错误:"val.match不是函数"

zah*_*hir 34 javascript match

我使用匹配函数进行正则表达式.

我使用的代码是

if(val.match(/^s+$/) || val == "" )
Run Code Online (Sandbox Code Playgroud)

但是javascript错误

"val.match is not function"
Run Code Online (Sandbox Code Playgroud)

我无法找到问题所在,

提前致谢

小智 42

我会说val不是一个字符串.

我得到以下"val.match is not function"错误

var val=12; 
if(val.match(/^s+$/) || val == ""){
   document.write("success: " + val);
}
Run Code Online (Sandbox Code Playgroud)

如果显式转换为字符串String(val),则错误消失

var val=12; 
if(String(val).match(/^s+$/) || val == ""){
   document.write("success: " + val);
}
Run Code Online (Sandbox Code Playgroud)

如果你使用字符串,则不需要进行转换

var val="sss"; 
if(val.match(/^s+$/) || val == ""){
   document.write("success: " + val);
}
Run Code Online (Sandbox Code Playgroud)


小智 17

问题是:val不是字符串

我可以想到两个选项1)转换为字符串:如果你确定val必须是字符串,可能是一个不错的选择

"与上述答案相同"

var val=12; 
if(String(val).match(/^s+$/) || val == ""){
   document.write("success: " + val);
}
Run Code Online (Sandbox Code Playgroud)

2)跳过这一行:在我的情况下,最好只检查val类型并跳过它是否不是字符串,因为不管怎样运行"匹配"功能都不是一个好主意.

val = 12;
if( val.match) {
  if(val.match(/^s+$/) || val == "" ) {
    document.write("success: " + val);
  }
} else {
    document.write("not a string: " + val);
}
Run Code Online (Sandbox Code Playgroud)


Eri*_*lin 5

注意:按照我的评论中的建议,将此作为答案。

一定要确保定义了 val 和一个字符串。另外,我猜这是一个错字,您的正则表达式中的“s”之前没有斜线。如果是这种情况,您可以将 if 测试替换为“if(val.match(/^\s*$)”