将symbol-number替换为gif

时间:2017-01-13 13:28:41

标签: javascript replace

我需要你的帮助。 我在这里有文字:hello #005 goodbye。 如果#,如何使用<img src=/img/005.gif>作为number (005<120),以hello <img src=/img/005.gif> goodbye替换文字替换文字?我必须有{{1}}

之类的东西

2 个答案:

答案 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);