2012-03-07 102 views
1

以下脚本返回null。这是正确的返回,如果我删除圆括号在STR和patt1文本spot_Northeast(300)_commentJavaScript RegEX与模式中的圆括号

<script type="text/javascript"> 
var str="0000CentralGasEform2,0000CentralGasEformNew,spot_Northeast(300)_comment"; 
var patt1=/\bspot_Northeast(300)_comment/g; 
document.write(str.match(patt1)); 
</script> 

在我的应用程序,在str中的值是从饼干取出,并patt1值基于窗口打开动态

regExp = new RegExp('\\b'+FormOpen+'\\b', 'g'); 

这里FormOpen是动态的。然后我替换cookie中的匹配

var temp=CookieList.replace(regExp,""); 

有没有办法告诉RegEX()是正常文本而不是硬编码?

回答

3

逃脱他们

var patt1=/\bspot_Northeast\(300\)_comment/g;

()保留字符在上下文(*),例如,你需要告诉正则表达式引擎将它们视为通过过程中的正常文本称为逃逸

+0

谢谢。在我的应用程序中,str中的值取自cookie,并且patt1中的值基于打开的窗口是动态的regExp = new RegExp('\\ b'+ FormOpen +'\\ b','g'); 这里FormOpen是动态的。然后我替换cookie中的匹配项 var temp = CookieList.replace(regExp,“”); 有没有办法告诉RegEX()是正常文本而不是硬编码? – Saravanan 2012-03-07 09:35:22

+0

Cookie不可信,因此它们的值不应用于任何评估的内容。我意识到这个例子可能不值得关注,但我想它值得注意。也许它不相关,因为他们只会影响他们自己,我猜它只是不是一种方法*我会采取? – 2012-03-07 09:55:36

0

逃离括号:

var patt1=/\bspot_Northeast\(300\)_comment/g; 
0

你需要躲避圆括号“\”转义字符,因为他们有SPECI al的含义在注册商标 您的注册类似于..

var patt1=/\bspot_Northeast\(300\)_comment/