我有以下代码 - 它只是抓取文本框中的值,对字符串执行正则表达式,然后计算字符串值中的星号数量:
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;
错误说明:
无法获得物业'长度'未定义或空引用
但我不清楚为什么代码有效,但我仍然有这个错误?有人可以告诉我为什么会这样吗?
答案 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不包含任何' *'