无法获得物业'长度'未定义或空引用

时间:2015-08-07 10:08:26

标签: 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;

错误说明:

  

无法获得物业'长度'未定义或空引用

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

3 个答案:

答案 0 :(得分:6)

由于match失败并且没有返回任何数组,因此在其上调用.length会抛出该错误。

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

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

match失败时处理这种情况。当匹配失败时,|| []将返回一个空数组,[].length将为您提供0

答案 1 :(得分:1)

如果没有匹配项,.match(regex)的返回值为null

答案 2 :(得分:0)

stringToSearch.toString()。match(regex)将返回null,如果stringToSearch不包含任何' *'