javascript - 无法获取未定义或空引用的属性 'length'

标签 javascript jquery regex

我有以下代码 - 它所做的一切都是获取文本框中的值,对字符串执行正则表达式,然后计算字符串值中有多少星号:

var textBoxValue = $(textbox).val();

function countHowManyWildCards(stringToSearch) {

    var regex = new RegExp(/\*/g);
    var count = stringToSearch.toString().match(regex).length;
    return count;

}

if (countHowManyWildCards(textBoxValue) > 1) {

//Other code
}

代码似乎可以工作,但出现错误:

stringToSearch.toString().match(regex).length;

错误状态:

Unable to get property 'length' of undefined or null reference

但我不清楚为什么代码有效,但我仍然有这个错误?有人可以告诉我为什么会这样吗?

最佳答案

由于 match 失败并且没有返回任何数组,因此调用 .length 将引发该错误。

要解决此问题,您可以使用:

var count = (stringToSearch.match(regex) || []).length;

处理匹配失败的情况。 || [] 将在匹配失败时返回一个空数组,[].length 将得到 0

关于javascript - 无法获取未定义或空引用的属性 'length',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31875158/

相关文章:

regex - 如何确定一个正则表达式是否与另一个正则表达式正交?

javascript - 停止 onClick 函数的发生

javascript - 上下文菜单上的 jQuery,打开和关闭

javascript - 让 safari 不显示损坏的图像符号

javascript - 我可以根据 JQuery 中的值选择输入节点吗?

正则表达式挑战将不同的规则分成两组

javascript - 在 Angular 中要求/浏览连帽衫

javascript - Firebug 是否有内置的东西来禁用站点/页面的所有 javascript?

javascript - 有没有办法通过单击按钮来更改 Jquery 插件选项?

java - java中的正则表达式解析字符串