2017-02-20 11 views
1

Я использую регулярное выражение конвертировать <a> с изображениями URL в <img>регулярное выражение работы на regex101, но не работает на Javascript

var message='<a href="http://example.com/example.jpg" target="_blank" rel="noopener noreferrer">http://example.com/example.jpg</a>'; 
 
message.replace(/<a.*>(https?:\/\/.*\.(?:png|jpg))<\/a>/gi,'<img src="$1">'); 
 
console.log(message); 
 
//expect: <img src="http://example.com/example.jpg">

work on regex101

ответ

3

Replace не меняет строку он вызывается, но возвращает новую строку. Просто измените на:

var message='<a href="http://example.com/example.jpg" target="_blank" rel="noopener noreferrer">http://example.com/example.jpg</a>'; 
 
message = message.replace(/<a.*>(https?:\/\/.*?\.(?:png|jpg))<\/a>/gi,'<img src="$1">'); 
 
console.log(message); 
 
//expect: <img src="http://example.com/example.jpg">

1

replace не заменяет исходную строку, она возвращает новую строку, которая является результатом replacemet, вы должны хранить, что новая строка в переменной и войти это следующим образом:

var message='<a href="http://example.com/example.jpg" target="_blank" rel="noopener noreferrer">http://example.com/example.jpg</a>'; 
 

 

 
var result = message.replace(/<a.*>(https?:\/\/.*\.(?:png|jpg))<\/a>/gi,'<img src="$1">'); 
 
console.log(result);

1
var message='<a href="http://example.com/example.jpg" target="_blank"  
    rel="noopener noreferrer">http://example.com/example.jpg</a>'; 
    var newString=message.replace(/<a.*>(https?:\/\/.*\.(?:png|jpg))<\/a>/gi,'<img src=$1">'); 
    alert(newString); 

Вам нужно использовать новую строку, замените ее не переписанной.

+1

'new' - зарезервированное ключевое слово! Ваш код не будет работать! –

+0

спасибо, парень, @ibrahimmahrir, отредактировал :) –

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

  • Нет связанных вопросов^_^