2011-12-03 67 views
0

邏輯:從「X」個月延長產品的一個月有效期爲「Y」個月的Javascript替換數與數字符串

ARRAY 
from_to[1] = 1 (this is x) 
from_to[2] = 6 (this is y) 

我有可變myItem一些文字是這樣

  • 辦公室1個月 - 盧比。 2500 /月

  • Skype的1個月 - 盧比。 1190 /月

  • Facebook的3月 - 盧比。 1250/MO

我有以下的數組:

from_to[1] = 1 
from_to[2] = 6 

我要計數包含在from_to的值[1](即 '1')存在於的次數文本。在上面的案例中,它應該是'2'倍。我想用包含在from_to [2]中的值替換這些值。

辦公室1月 - 盧比。 2500 /月

Skype的1個月 - 盧比。 1190 /月

,當我使用此代碼:

var myItem = document.getElementById('itemsdesc').innerHTML;   
alert (myItem.match(new RegExp(from_to[1],"gi")).length); 

這將返回我5! (我可以承認,它也符合價格部分的'1')如何防止?

所需的輸出:(更換後)

  • 辦公室6個月 - 盧比。 2500/MO

  • Skype的6個月 - 盧比。 1190 /月

  • Facebook的3月 - 盧比。 1250 /月

我是一個新手,正則表達式.......

回答

1

試試這個:

alert (myItem.match(new RegExp(' ' + from_to[1] + ' mo',"gi")).length); 

更換不應該現在是一個問題。

+0

是的...它的工作....謝謝.... – Sandy505

0

我認爲你只是缺少一個空間,在正則表達式的1的兩側,因此爲什麼在1190/mo1匹配。像這樣的東西將有望幫助:

var str = "Office 1 mo - Rs. 2500/mo Skype 1 mo - Rs. 1190/mo Facebook 3 mo - Rs. 1250/mo"; 

var from_to = ["0", "1", "6"]; 

var re = new RegExp("\\s" + from_to[1] + "\\s", "gi"); 
var x = str.replace(re, " " + from_to[2] + " "); 

// x = Office 6 mo - Rs. 2500/mo Skype 6 mo - Rs. 1190/mo Facebook 3 mo - Rs. 1250/mo