【问题标题】:regex work on regex101 but doesn't work on javascript [duplicate]正则表达式适用于 regex101,但不适用于 javascript [重复]
【发布时间】:2017-02-20 23:43:04
【问题描述】:

我使用正则表达式将带有图像 url 的 <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">

【问题讨论】:

    标签: javascript regex replace


    【解决方案1】:

    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">

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:
          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);
        

        你需要消耗新的字符串,替换不会重写。

        【讨论】:

        • new 是保留关键字!你的代码不起作用!
        • 感谢小伙子,@ibrahimmahrir,已编辑 :)
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-01-30
        相关资源
        最近更新 更多