2010-05-27 33 views
0
<input type="text" value="[tabelas][something][oas]" id="allInput"> 
<script type="text/javascript"> 

allInput = document.getElementById('allInput'); 

var nivel = new Array('tabelas', 'produto'); 
for (var i =0; i < nivel.length ; i++) 
{ 
alert(" oi => " + allInput.value + " <-- " + nivel[i]) ; 
var re = new RegExp("^\[" + nivel[i] + "\]\[.+\].+", "g"); 
alert(re); 
allInput.value = allInput.value.replace(
     re, "OLA"); 
alert(" oi 2 => " + allInput.value + " <-- " + nivel[i]) ; 
} 
</script> 

基本上我whant取代「something2在[tabelas] [東西] [otherfield]由若干數量的,我一直在玩的正則表達式,不得不從這個使用.replace不同的結果( /表達/,XXX)和新的RegExp()。的Javascript更換使用正則表達式

最好的問候,並感謝您的任何幫助。

回答

0
  1. 您需要雙重轉義才能讓正則表達式構造函數看到轉義,而不是Javascript解析器。 "\["將導致字符串[,"\\["將導致\[
  2. 請注意,正則表達式\[.+\][abc][def]等字符串匹配。您可能需要\[\w+\]或類似的東西。
0

如果您構建從new RegExp(...)語法正則表達式,那麼你需要反斜槓轉義字符。

new RegExp("^\\[" + nivel[i] + "\\]\\[.+\\].+", "g"); 
+0

此外,我相信他希望'\\\ [[^ \\\]] + \\\]'而不是'\\\ [。+ \\\]' – Tomalak 2010-05-27 12:42:30

+0

您的回答也很好,但是,我只能投一票:S – 2010-05-27 17:35:11

相關問題