【问题标题】:Javascript exec returning nullJavascript exec返回null
【发布时间】:2015-05-01 17:46:56
【问题描述】:


我的问题是当我尝试在我的字符串上使用 exec 时,控制台会抛出此错误:

Uncaught TypeError: Cannot read property '1' of null

这是我的代码:

var regexes = {
    "bold": [/\[bold\](.*)\[\/bold\]/g,"<b>","</b>"],
    /*"italics": [[/\[italics\]/g,"<i>"],[/\[\/italics\]/g,"</i>"]],
    "underline": [[/\[underline\]/g,"<u>"],[/\[\/underline\]/g,"</u>"]],
    "spoiler": [[/\[spoiler\]/g,"<div class='spoilerEnhanced'>"],[/\[\/spoiler\]/g,"</div>"]],
    "strikethrough": [[/\[strikethrough\]/g,"<del>"],[/\[\/strikethrough\]/g,"</del>"]],*/
}
var functioners = {
    "zalgo": [/(\[zalgo\].*\[\/zalgo\])/g],
    "flip": [/(\[flip\].*\[\/flip\])/g],
    "superscript": /[a-zA-Z0-9]\^([a-zA-Z0-9]*)/g,
    "triforce": /(%triforce)/g,
    "list": /(^\*\ .*)/g
}

var replies = document.getElementsByClassName("postMessage");
var x = 0
function memes(x,z) {
    window.setTimeout(function() {
        var theNew = "";
        theNew = replies[x].innerHTML;
        for (key in regexes) {
            if (regexes[key][0].exec(replies[x].innerHTML) !== null) {
                theNew = regexes[key][1] + regexes[key][0].exec(replies[x].innerHTML)[1] + regexes[key][2];
            }
        }
        if (x < z) {
            memes(x+1,z);
        }
    },5);
}
memes(x,replies.length-1);

然而,这段代码应该通过类名为“postMessage”的元素并用 exec 替换某些文本。错误被抛出。 RegExp.exec() returns NULL sporadically 也有类似的问题。我不知道如何以我目前的情况去做。如果有人可以帮助我解决这个问题,那就太好了。 请注意:此代码位于 Google Chrome 扩展脚本中!!

【问题讨论】:

    标签: javascript regex google-chrome-extension null exec


    【解决方案1】:

    请您尝试以下方法:

    for (key in regexes) {
            var m = regexes[key][0].exec(replies[x].innerHTML);
            if (m !== null) {
                theNew = regexes[key][1] + m[1] + regexes[key][2];
           }
    }
    

    请告诉我

    【讨论】:

    • 谢谢!完美运行。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-04-28
    • 2023-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-13
    • 1970-01-01
    相关资源
    最近更新 更多