Javascript将数字替换为字符串中的数字

时间:2011-12-03 19:15:00

标签: javascript regex replace match

逻辑:将产品的月有效期从'x'个月延长到'y'个月

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

我在变量 myItem

中有一些这样的文字
  • Office 1 mo - Rs。 2500 /月

  • Skype 1 mo - Rs。 1190 /月

  • Facebook 3 mo - Rs。 1250 /月

我有以下数组:

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

我想计算文本中存在from_to [1](即'1')中包含的值的次数。如果是上述文本,它应该是'2'次。我想用from_to [2]

中包含的值替换这些值
  

Office 1 mo - Rs。 2500 /月

     

Skype 1 mo - Rs。 1190 /月

当我使用此代码时:

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

这让我回归5 !! (我可以承认它也与价格部分中的'1'相匹配)如何防止这种情况?

渴望输出:(替换后)

  • Office 6 mo - Rs。 2500 /月

  • Skype 6 mo - Rs。 1190 /月

  • Facebook 3 mo - Rs。 1250 /月

我是regex的新手.......

2 个答案:

答案 0 :(得分:1)

试试这个:

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

现在替换应该不是问题。

答案 1 :(得分:0)

我认为你只是在正则表达式1的任意一侧错过了一个空格,因此1中的1190/mo匹配了。这样的事情有望提供帮助:

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