无法获取未定义或空引用的属性"长度"

GIV*_*KEN 4 javascript regex jquery

我有以下代码 - 它只是抓取文本框中的值,对字符串执行正则表达式,然后计算字符串值中的星号数:

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
}
Run Code Online (Sandbox Code Playgroud)

代码似乎有效,但出现错误:

stringToSearch.toString().match(regex).length;
Run Code Online (Sandbox Code Playgroud)

错误说明:

无法获取未定义或空引用的属性"长度"

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

anu*_*ava 6

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

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

var count = (stringToSearch.match(regex) || []).length;
Run Code Online (Sandbox Code Playgroud)

match失败时照顾案件.|| []当匹配失败时会返回一个空数组并且[].length会得到你0.