我需要你的帮助。
我在这里有文字:hello #005 goodbye
。
如果#
,如何使用<img src=/img/005.gif>
作为number (005<120)
,以hello <img src=/img/005.gif> goodbye
替换文字替换文字?我必须有{{1}}
答案 0 :(得分:4)
分两步显示流程
var str = "hello #005 goodbye",
num = str.match(/\#(\d+) /)[1],
gif = '<img src="/img/'+num+'.gif" />';
console.log(str.replace("#"+num,gif));
一步 - 测试3位数
var str = "hello #005 goodbye"
.replace(/\#(\d{3})/,'<img src="/img/$1.gif" />');
console.log(str);
通过测试:
function addGif(str) {
var num = str.match(/\#(\d+)/),
gif = num &&
num.length > 0 &&
parseInt(num[1]) >= 5 &&
parseInt(num[1]) <= 120 ? '<img src="/img/' + num[1] + '.gif" />' : "";
return gif ? str.replace("#" + num[1], gif) : "no number or number not in range";
}
var str = "hello # goodbye"; // will not return a match
console.log(addGif(str))
str = "hello #" // will not return a match
console.log(addGif(str))
str = "hello #005" // will return a match
console.log(addGif(str))
str = "hello #1005" // will not return a match
console.log(addGif(str))
str = "hello #100" // will return a match
console.log(addGif(str))
str = "hello #1111111111 goodbye" // will not return a match
console.log(addGif(str))
答案 1 :(得分:1)
当你可以在一个步骤中完成时,分两步完成它是没有意义的。替换中的捕获组是1美元,因此您可以将其放在您想要的数字的位置。
var str = "hello #005 goodbye",
result = str.replace(/#(\d+)/,'<img src="/img/$1.gif" />');
console.log(result);
在替换中用数字要求检查我错过了2次我读了这个问题!
var str = "hello #005 goodbye",
result = str.replace(/#(\d{3})/, function (x, group1) {
var num = parseInt(group1);
return num >= 5 && num<=120 ? '<img src="/img/' + group1 + '.gif" />' : group1;
});
console.log(result);