我使用匹配函数进行正则表达式.
我使用的代码是
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)
注意:按照我的评论中的建议,将此作为答案。
一定要确保定义了 val 和一个字符串。另外,我猜这是一个错字,您的正则表达式中的“s”之前没有斜线。如果是这种情况,您可以将 if 测试替换为“if(val.match(/^\s*$)”