正则表达式在regex101上工作,但不适用于javascript

时间:2017-02-20 12:59:51

标签: javascript regex replace

我使用正则表达式转换<a>,图片网址为<img>

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 个答案:

答案 0 :(得分:3)

Replace不会更改它所调用的字符串,但会返回一个新字符串。只需改为:

&#13;
&#13;
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">
&#13;
&#13;
&#13;

答案 1 :(得分:1)

replace不替换原始字符串,它返回一个替换结果的新字符串,您必须将该新字符串存储在变量中并将其记录如下:

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

答案 2 :(得分:1)

typeof

您需要使用新字符串,替换不会重写。