【问题标题】:Javascript replace using regular expressionJavascript 使用正则表达式替换
【发布时间】:2013-11-12 10:45:32
【问题描述】:

我需要用字符串替换 url。

示例:

var container = "hello http://www.youtube.com/watch?v=r94hrE10S84 hello";

我想替换为:

container = "hello <iframe  src='//www.youtube.com/embed/r94hrE10S84' </iframe> guys";

我正在尝试:

container = container.replace("http://www.youtube.com/watch?v=(/\w*\d+\w*/)","<iframe src='//www.youtube.com/embed/$1' </iframe>");

谢谢

【问题讨论】:

    标签: javascript regex


    【解决方案1】:
    container.replace(/(https?:\/\/\S+)/i, "<iframe  src='$1' </iframe>");
    

    【讨论】:

      【解决方案2】:

      你可以使用:

      repl = container.replace(/(https?:\/\/\S+)/i, function(m) { 
              if (m.indexOf(".youtube."))
               return m.replace(/^(.+?)\/watch\?v=(.+)$/, "<iframe src='$1/embed/$2'> </iframe>");
             else return m;
          });
      
      //=> ello <iframe src='http://www.youtube.com/embed/r94hrE10S84'> </iframe> hello
      

      【讨论】:

      • Ty 但它不会改变 watch?v= 用于 embed/ 我只想改变 youtube 的 url。
      【解决方案3】:
      (?:https?://)?(?:www\.)?youtu(?:be\.com/watch\?(?:.*?&(?:amp;)?)?v=|\.be/)([\w‌​\-]+)(?:&(?:amp;)?[\w\?=]*)?
      

      ID 应该在第一组。

      所以你的代码会是这样的:

      var container = "http://www.youtube.com/watch?v=r94hrE10S84";
      var reg = /(?:https?:\/\/)?(?:www\.)?youtu(?:be\.com\/watch\?(?:.*?&(?:amp;)?)?v=|\.be\/)([\w‌​\-]+)(?:&(?:amp;)?[\w\?=]*)?/;
      container = container.replace(reg,"<iframe src=\"//www.youtube.com/embed/$1\"></iframe>");
      

      这考虑了无 www、无协议和短链接 (youtu.be) 的链接

      Fiddle

      Source

      【讨论】:

        猜你喜欢
        • 2011-02-24
        • 2014-01-26
        • 2010-11-12
        • 2016-09-23
        • 1970-01-01
        • 2012-05-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多