2011-12-03 66 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