2012-11-16 26 views
0

我不能在我的生活中找出如何用JavaScript中的值替换所有[<和所有]>Javascript正则表达式替换不起作用

这里就是我试过,它只是不工作:

function SwitchDialog(NextDialog) 
{ 
    if (NextDialog=='SCHEDULE') { 
     $('.popup1').smart_modal_hide(); 
    } else if (NextDialog=='LICENSEE') { 
     gotoLicensee(licenseeLink); 
    } else if (NextDialog=='REVIEWCART') { 
     window.location = CART_URL; 
    } else if (NextDialog=='RFO') { 
     window.location = REGISTER_FOR_OTHERS_URL; 
    } else { 
     if (NextDialog=='PREREG') { 
      var msgtxt = gk_text.replace(//[/g, '<'); 
      msgtxt  = msgtxt.replace(//]/g, '>'); 
      DialogTemps[NextDialog].msgtext = msgtxt; // error occurs on this line 
     } 
     RenderDialog(NextDialog); 
    } 
} 

我在拿到Syntax error: "missing) after argument list;在分配msgtext的行上。

我做错了什么?

+2

@Maccath:要做多次替换,你需要一个全局正则表达式。 –

+1

你是对的,抱歉,金发的时刻。 :P – Maccath

回答

4

您注释了结束),因此错误。

你一定要逃逸一个正则表达式一个/,而不是一个坏主意,逃出即使很可能不在这里需要[]为好,它。

var msgtxt = gk_text.replace(/\/\[/g, '<'); 
msgtxt  = msgtxt.replace(/\/\]/g, '>'); 
+0

这是一个惊人的正则表达式 – MB34

+2

@ MB34:*“这是一个令人毛骨悚然的正则表达式”*不是当你使它成为一个令人兴奋的代码评论。 –

+0

我站好了。正如我的尝试所证明的那样,我对Regex并不擅长。我去了regex101.com并建立它,它看起来就像你发布和正常工作,谢谢。一旦我能够,我会接受。 – MB34

6

您需要逃生的[和]在表达字符反斜线(\),像这样:

 var msgtxt = gk_text.replace(/\[/g, '<'); 
     msgtxt  = msgtxt.replace(/\]/g, '>'); 
0

你需要逃避[]字符\,如然后有special meaning in regex

var msgtxt = gk_text.replace(/\[/g, '<').replace(/\]/g, '>');