开发者问题收集

如果不匹配,正则表达式将返回 null

2018-10-01
1895

我尝试使用正则表达式来读取用户输入的消息,查找关键字并进行计数。

我遇到的问题是,如果没有匹配项,我会收到此错误: Uncaught TypeError:无法读取 null 的属性“length”

如果有匹配项,我不会收到该错误,尽管它会计算输入该短语的次数。

function readMessage() {
    var newtext = $("#myText").val()

    var newMessage = document.createElement("div");
    newMessage.setAttribute("id", "Divjuan");
    var messageText = document.createTextNode(newtext);
    console.log(messageText)
    newMessage.appendChild(messageText);

    var currentDiv = document.getElementById("div1");
    currentDiv.insertBefore(newMessage, currentDiv.childNode);

    var source1 = newtext;
    console.log(source1)
    var exampletcount1 = source1.match(/example1/g).length;
    console.log(exampletcount1)

    var exampletcount2 = source1.match(/example2/g).length;
    console.log(exampletcount2)

}

任何帮助都很好

2个回答

在尝试访问其长度之前,请检查匹配项是否为空:

var examplematch1 = source1.match(/example1/g);
var exampletcount1 = examplematch1 ? examplematch1.length : 0;
console.log(exampletcount1);
Tim Biegeleisen
2018-10-01

您可以执行以下操作:

let count = (source1.match(/example1/g) || []).length

这是一个示例代码片段:

let source1 = "abcd";
console.log((source1.match(/example2/g) || []).length);
Ayush Gupta
2018-10-01