javascript - 如果没有匹配项,正则表达式返回 null

标签 javascript regex

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

我遇到的问题是,如果没有匹配项,我会收到此错误:Uncaught TypeError: Cannot read property 'length' of null

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

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)

}

任何帮助都会很棒

最佳答案

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

var examplematch1 = source1.match(/example1/g);
var exampletcount1 = examplematch1 ? examplematch1.length : 0;
console.log(exampletcount1);

关于javascript - 如果没有匹配项,正则表达式返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52594035/

相关文章:

java - 如何在正则表达式中添加多个匹配条件

regex - 如何在正则表达式中只查找换行符?

java - 简单的java正则表达式不起作用

regex - 如何以字符串形式获取箭头函数的主体?

javascript - typescript 不打字

javascript - Jquery .find() 不返回数据......在 IE 中

javascript - 如何分离和重新附加元素

javascript - 如何让这个 javascript 重定向在 Firefox 中工作?

javascript - 执行正则表达式,同时将所有变量保留在 block 范围内

javascript - Cors 安全性与 cookie