逻辑:将产品的月有效期从'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的新手.......
答案 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