【问题标题】:Javascript to get youtube video id (regex issue)获取 youtube 视频 ID 的 Javascript(正则表达式问题)
【发布时间】:2015-07-23 21:25:49
【问题描述】:

我用:

<script type="text/javascript">
    document.addEventListener("DOMContentLoaded", function(event) {
        var field1 = document.getElementById("field_wy4dm0");
        field1.addEventListener("change", combineFields);

        function combineFields() {
            var val1 = field1.value;
            var val1re = val1.match("/(.*)?")[1];
            var str = document.getElementById("changeThisMovie").innerHTML;
            var res = str.replace("yeC3AisTs2Y", val1re);
            document.getElementById("changeThisMovie").innerHTML = res;
        }
    });
</script>

获取位于“/”和“?”之间的 youtube 视频 ID 非常有用在“val1”变量中,并将位于 div 内的旧视频 id“yeC3AisTs2Y”替换为新视频(“val1re”)。

问题是它添加了“?”在新视频 ID 的末尾,而不是获取:

/videoid?feature=embed...

我明白了:

/videoid??feature=embed...

我该如何解决这个问题?

谢谢!!!

【问题讨论】:

  • 我很确定您遇到了正则表达式问题(考虑更改主题和标签...),但如果您可以发布我们肯定知道的实际值
  • 谢谢。你的意思是什么“实际价值”?
  • val1 (field1.value) 和 str 中有哪些值?
  • val1 是一个 youtube 完整 url(插入到文本字段中),而 str 也是一个 youtube 完整 url。我正在尝试将 str 视频 ID 更改为 val1 视频 ID。
  • 请提供实际数据,而不是描述。类似val1 = "http://www.youtube.com?a=b&amp;c=d"

标签: javascript regex youtube


【解决方案1】:

我想你想逃避?在您的正则表达式中表示文字?符号 - 正则表达式将解释为忽略前一个块

所以你可以尝试如下:

 var val1re = val1.match("/(.*)\?")[1];

【讨论】:

  • 感谢 filype,但现在它只是忽略了“?”属性...(它返回“/”之后的值,但不会在“?”之后停止)
猜你喜欢
  • 2011-08-08
  • 1970-01-01
  • 2022-10-06
  • 1970-01-01
  • 1970-01-01
  • 2018-07-08
  • 2015-08-16
  • 2012-07-11
  • 2020-12-21
相关资源
最近更新 更多