javascript字符串替换

时间:2012-04-21 12:19:22

标签: javascript

嘿,伙计们今晚只是一个快速的人。

我只是想改变一个笑脸,例如:-P到像<span class=surp></span>这样的HTML代码 但它出现了一个错误,即Uncaught SyntaxError: Invalid regular expression: /:-(/: Unterminated group


这是我的代码的一部分

newmessage = newmessage.replace(/:-(/gi, "<span class=sad></span>");

我想出来了,它不喜欢支架,所以有没有其他方法用括号做这个?

2 个答案:

答案 0 :(得分:3)

在正则表达式中,(开始一个组 - 但在您的情况下,您希望匹配文字(,因此您需要使用反斜杠来阻止它:

newmessage = newmessage.replace(/:-\(/gi, "<span class=sad></span>");

除此之外,我会将-设为可选 - 大多数人使用:(代替:-(

newmessage = newmessage.replace(/:-?\(/gi, "<span class=sad></span>");

答案 1 :(得分:0)

正如@ThiefMaster正确陈述的那样,你需要使用转义字符\来转义括号,以便在正则表达式中使用它。

但是对于你想要做的事情,我认为你最好将一个函数作为第二个参数传递,所以你可以用一个匹配你想要的所有表情符号的正则表达式替换单个.replace()调用中的所有内容。取代

这样的事情:

newmessage = newmessage.replace(/(:-\(|:\(|:-\)|:\)|:-P|:P)/gi, function(match) {
  switch (match.toUpperCase()) {
    case ':-)':
    case ':)':
      return '<span class="happy"></span>';
    case ':-(':
    case ':(':
      return '<span class="sad"></span>';
    case ':-P':
    case ':P':
      return '<span class="surp"></span>';
    default:
      return match;
  }
});