【问题标题】:Unable to get property 'length' of undefined or null reference无法获取未定义或空引用的属性“长度”
【发布时间】:2015-08-07 10:08:25
【问题描述】:

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

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;

错误状态:

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

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

【问题讨论】:

  • .match 表示它返回 一个包含匹配结果的数组,如果没有匹配则返回 null。 所以你应该在访问长度之前检查它的null。跨度>

标签: javascript jquery regex


【解决方案1】:

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

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

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-11-01
        • 1970-01-01
        • 2019-07-15
        • 2019-03-04
        • 1970-01-01
        • 1970-01-01
        • 2017-07-25
        相关资源
        最近更新 更多