【问题标题】:JavaScript error: "val.match is not a function"JavaScript 错误:“val.match 不是函数”
【发布时间】:2011-06-20 10:35:32
【问题描述】:

我使用了正则表达式的匹配函数。

我使用的代码是

if(val.match(/^s+$/) || val == "" )

但是 JavaScript 错误

"val.match is not function"

我找不到问题所在?

【问题讨论】:

  • 我们能看到你在哪里定义了val吗?确保val 是一个字符串:val.toString()。或者您可以使用 Regex.exec 隐式转换为字符串:/^s+$/.exec(val)
  • val 是字符串,刚才我检查匹配是否适用于某些单词而不适用于某些单词,
  • 一定要确保定义了 val 和一个字符串。另外,我猜这是一个错字,您的正则表达式中的“s”之前没有斜杠。如果是这种情况,您可以将 if 测试替换为 "if(val.match(/^\s*$)"
  • 感谢 Eric Wendelin 先生的想法,我刚刚将编码更改为 val.toString(),这是有效的,我是 javascript 新手,如果您的工作有任何问题,对不起,谢谢埃里克
  • 似乎已经回答了这个问题 - 很高兴看到 Eric 获得荣誉。愿意将其添加为答案吗?

标签: javascript match


【解决方案1】:

我会说 val 不是字符串。

我收到以下错误“val.match is not function”

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

【讨论】:

  • 谢谢!我在stackoverflow.com/questions/881085/… 使用代码并且收到“不是函数”消息并且快疯了!
  • 如果您需要它来实现某种管道转换,最好将传入的值转换为字符串以确保它始终有效。谢谢@chrisp7575
【解决方案2】:

注意:根据我的评论,将其作为上面建议的答案。

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

【讨论】:

    【解决方案3】:

    问题是:val 不是字符串

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

    “同上回答”

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

    2) 跳过该行:在我的情况下,最好只检查 val 类型,如果它不是字符串则跳过,因为无论如何运行“匹配”函数并不是一个好主意。

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

    【讨论】:

      猜你喜欢
      • 2012-04-07
      • 1970-01-01
      • 2015-06-27
      • 2020-09-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多