2012-03-07 80 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/