2017-02-20 54 views
1

我使用正则表达式与图片URL转换<a><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

感谢lad,@ibrahimmahrir,编辑:) –

相关问题