2017-04-02 71 views
0

我試圖製作一個應用程序來計算每個字符在給定字符串中出現的次數。例如,在字符串「hello 12355」中,它應該與過去1的所有數字匹配,而不是與「hello」部分匹配。然而,當我嘗試運行代碼,我得到這個在控制檯:無效的正則表達式:沒有重複的錯誤

「未捕獲的SyntaxError:無效的正則表達式:/ /?在新的RegExp()沒有重複 」

當我改變xy到92以上的任何東西,但是,代碼運行良好。從我讀過的關於這個錯誤的信息來看,這意味着你必須加倍反斜線一些字符,因爲它們在Regexp中意味着什麼。但是,我不能在不影響所有Unicode值的情況下對Unicode變量進行雙反斜槓。誰能幫忙?

這裏是我的代碼:

var occArray = []; 
var occChars = []; 

var xy = 50; 

for (i = xy; i < 100; i++) { 
    var unicodeChar = String.fromCharCode(i); 
    var counter = new RegExp(unicodeChar, 'g'); 
    var occurence = "hello 12355"; 
    var occ = (occurence.match(counter) || []).length; 

    occArray.push(occ);  
    occChars.push(unicodeChar); 
} 
    alert(occArray); 
    alert(occChars); 
+0

[JavaScript正則表達式「Nothing to repeat」錯誤]的可能重複(http://stackoverflow.com/questions/10650443/javascript-regular-expression-nothing-to-repeat-error) –

回答

2

我想這是因爲一些你傳爲unicodeChar字符是Regex特殊字符(在你的錯誤,這是?這是63)。請考慮檢測它是否是特殊字符,如果是,可以在將它傳遞給正則表達式之前在其前面添加反斜槓。

願這幫助你。

+0

是的,它碰巧是導致問題的問號和雙括號。我使用if語句跳過這些特定的Unicode值,現在它可以工作。謝謝! –

相關問題