Javascript正则表达式中无与伦比的)

use*_*349 6 javascript regex

也许你可以帮助我:我的javascript代码:

bbchatdecode: function(text) {  

var chars = Array(":\\)","8-\\)",":cry:",":oops:");
var replacements = Array('<img src=\"smiley-smile.gif\" alt=\":)\">','<img src=\"smiley-cool.gif\" alt=\"8-)\">','<img src=\"smiley-cry.gif\" alt=\":cry:\">','<img src=\"smiley-embarassed.gif\" alt=\"oops:\">');
for (var ic=0; ic<chars.length; ic++) {
  var re = new RegExp(chars[ic], "gi");
  if(re.test(text))
  {
   text = text.replace(re, replacements[ic]);
  }
}
return text;
}   
Run Code Online (Sandbox Code Playgroud)

但在浏览器中我可以看到:

)正则表达式无与伦比

Arv*_*waj 12

Unmatched ) in Javascript regular expression当您的某些字符串包含时发生错误')'.你需要逃避这一点.这是执行此操作的功能:

function escapeRegExp(str) {
  return str.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&");
}
Run Code Online (Sandbox Code Playgroud)


shy*_*cha 5

有效的正则表达式字符串是::\\\). 您应该重复三次反斜杠才能从字符串中转义某些内容。当您将正则表达式构建为原始 JS 时(例如var re = /:\)/;),您不需要这样做。

抱歉,但我现在无法解释为什么会发生这种情况。