2014-08-30 22 views
0

有人可以幫我弄清楚這一點,在此先感謝。excel-like JavaScript應用正則表達式錯誤:沒什麼可重複的

我有這個正則表達式來評估電子表格應用程序中所選「單元格」(文本輸入元素)的值。

我想實現像Microsoft Excel這樣的東西。

function evaluate(){ 
    var a = document.activeElement; 
    var pattern = /^=({|()*[A-Z]+\d+(+|-|*|\/)?(}|))*/g; 
    while(a.value.test(pattern)==true){ 
     var index = pattern.lastIndex; 
     document.write(index); 
    } 
} 

try{evaluate();}catch(e){document. Write(e);} //throws exception: nothing to repeat 

正則表達式的解釋 預計開始用 「​​=」。 0個或更多出現的開頭括號或括號。 一個或多個大寫字母,後跟一個或多個數字。 期望一個數學運算符或者沒有一個數學運算符。 可以以右括號或括號結尾。

回答

0

您需要轉義*,+,(,)符號存在於捕獲組內。

^=({|\()*[A-Z]+\d+(\+|-|\*|\/)?(}|\))*$ 

DEMO

並且也最好使用下面的正則表達式,因爲上述正則表達式也將與=隨後開始通過{並用) paranthesis結束的字符串匹配。

^(?:=({)*[A-Z]+\d+(\+|-|\*|\/)?(})*|=(\()*[A-Z]+\d+(\+|-|\*|\/)?(\))*)$ 

DEMO

+0

謝謝,第二個表達式的作品完美 – devaughnHall 2014-08-30 11:21:20

+0

[接受這個答案是否有幫助。(http://stackoverflow.com/help/accepted-answer) – 2014-08-30 11:22:27