2015-05-01 46 views
1


我的问题是,当我尝试在我的字符串使用EXEC,控制台抛出这个错误:
的Javascript EXEC返回null

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扩展脚本中!

回答

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]; 
     } 
} 

请让我知道

+0

谢谢!完美的作品。 – Billy