2016-10-03 45 views
0

我正在模擬javascript中的MS excel。 我必須在公式中存在的所有cellname中添加一個前綴。例如,在javascript中的所有單元格名稱中添加前綴的正則表達式

AB75*(AA79+A9)+A2*A5 

我想添加一個前綴什麼(可以說X)中的所有cellnames

輸出應該是

X.AB75*(X.AA79+X.A9)+X.A2*X.A5 

我如何用正則表達式實現這一目標。

我想將X添加到僅包含「。」的單元格名稱中。未添加。例如,

AB75*(Y.AA79+A9)+Z.A2*A5 

應導致成

X.AB75*(Y.AA79+X.A9)+Z.A2*X.A5 

回答

2

你可以試試這個:

formula.replace(/(^|[^.A-Z])([A-Z]+\d+)/g, "$1X.$2"); 

它會匹配任何大寫字母加數字但如果有字母前點。

1
formula.replace(/([A-Z]+\d+)/g, "X.$1") 

這裏我們假設一個小區名稱定義爲一個或多個大寫字母([A-Z]+),後面跟着一個或多個數字(\d+。從那裏開始,我們只在X.前面加上g標誌用於查找所有匹配項。


更新:如JavaScript正則表達式缺少一些細微(如回顧後),這將是很難用單一的正則表達式來做到這一點。這裏是一個替代的解決方案:

var parts = formula.split(/(?=[^.\w])/); 

var reconstructedFormula = parts.map(function(part) { 
    if(part.indexOf('.') !== -1) 
    return part; 
    else 
    return part.replace(/([A-Z]+\d+)/g, "X.$1"); 
}).join(); 
+0

AB75 * Balance_sheet.AA79我想只爲AB75添加X.不是從「開始」。「 – Vishu238

+0

@ Vishu238更新。 – ndn

相關問題