我有一些運行的JavaScript使用替換正則表達式來修改頁面上的內容。不過,我遇到了特定的正則表達式量詞問題。我讀過的所有文檔(我知道它也以其他語言的正則表達式工作)說JavaScript支持{N}
,{N,}
和{N,N}
量詞。也就是說,您可以指定您想要的特定匹配數量或一系列匹配。例如。 (zz){5,}
至少匹配10個z,並且z{5,10}
將匹配從5到10的任意數量的z,不多也不少於z。Javascript RegExp量詞問題
問題是,我可以匹配一個確切的數字(例如z{5}
),但不是範圍。離我最近的數字是,它與正則表達式字符串中的逗號有關,但我不明白爲什麼,也不能解決這個問題。我試圖轉義逗號,甚至使用unicode十六進制字符串作爲逗號(\u002C
),但無濟於事。爲了消除任何可能的誤解,並解決在評論中提出的一些問題,這裏有一些額外的信息(在評論中也可以找到):我試圖以各種可能的方式創建數組,包括var = [/z{5,}/gi,/a{4,5}/gi];
, var = [new RegExp('z{5,}', 'gi'), new RegExp('a{4,5}', 'gi')];
以及var[0] = new RegExp('z{5,}'), 'gi');
,var[1] = /z{5,}/gi;
等。該陣列在for-loop中用作somevar.replace(regex[i], subst[i]);
。
可能想發佈您使用的JS代碼,因爲範圍量詞在JS正則表達式中得到支持就好了。 – MooGoo 2010-10-22 01:18:42
發佈示例代碼並告訴我們您嘗試使用的瀏覽器和版本。 – some 2010-10-22 02:28:52
因此,我有一個數組,其中包含像「/ z {5,}/gi」這樣的值,我的腳本用於循環訪問數組的內容並執行「var.replace(regex [i],other [i]);」 – klanni 2010-10-22 17:01:10