2017-01-13 3 views
0

Мне нужна ваша помощь. У меня есть текст: hello #005 goodbye. Как сделать js заменить текст, начинающийся с # от img like <img src=/img/005.gif> if number (005<120)? Должно быть, я что-то вроде hello <img src=/img/005.gif> goodbyeзаменить символ-номер на gif

+0

Так что базовое регулярное выражение замены() – epascarello

ответ

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

..... пожалуйста – mplungjan

+0

Почему два шага, когда нужен только один? простая группа захвата и $ 1 .... – epascarello

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

+0

Вы правы. но мне нужно проверить, больше ли число или меньше 120, поэтому предыдущий ответ более полезен для меня. но все равно спасибо вам, например, –

+0

@ Андрей _-_ Я видел, что кофе не пинал .... – epascarello

+0

epascarello LOL –

Смежные вопросы