2

我很难尝试添加验证器方法来检查URL是否被允许(来自 YouTube 或 Vimeo 使用正则表达式字符串),以及视频是否确实存在于网站上并且不是 404。

到目前为止,我的 URL 验证器与 URL 正确匹配,并尝试使用 oEmbed 测试远程验证:

var vidRegExp = /https?:\/\/(?:[0-9A-Z\-]+\.)?(vimeo\.com\/(clip\:)?(\d+).*|player\.vimeo\.com\/video\/?(\d+).*|(?:youtu\.be\/|youtube\.com\S*[^\w\-\s])([\w\-]{11})(?=[^\w\-]|$)(?![?=&+%\w]*(?:['"][^<>]*>|<\/a>))[?=&+%\w\-]*)/i;

jQuery.validator.addMethod("checkVideoURL", (function(val, elem) {
  if (val.length === 0) {
    return true;
  }
  var match = val.match(vidRegExp);
  var settings = $('form').validate().settings;
  if (match) {
    $.extend(true, settings, {
      rules: {
        item_provider_url: {
          remote: {
            url: "http://vimeo.com/api/oembed.json",
            dataType: "jsonp",
            data: {
              format: "jsonp",
              url: function() {
                return $("#item_provider_url").val;
              }
            }
          }
        }
      },
      messages: {
        item_provider_url: {
          remote: "No video exists at this URL"
        }
      }
    });
  } else {
    $.validator.messages.checkVideoURL = "The URL you put in is not a valid YouTube or Vimeo URL. Please check your link.";
    return false;
  }
}), "Invalid URL.");

我一直在 StackOverflow 上寻找正确的方法来寻找正确的方法,但似乎找不到任何有帮助的东西。上面不起作用的是远程验证部分。(例如 404/死链接:http: //vimeo.com/54634709

此外,由于显然 YouTube 和 Vimeo 有不同的 URL 来检查,我需要知道如何检查匹配的 URL 并为每个不同的站点返回不同的远程 URL。另一个大优点是扩展检查以查看视频是否允许嵌入。

上面的正则表达式字符串适用于所有这些 URL:

http://vimeo.com/50406912
https://vimeo.com/50406912
http://www.vimeo.com/50406912
https://www.vimeo.com/50406912
http://soundcloud.com/forss/flickermood
http://www.youtube.com/v/0zM3nApSvMg?fs=1&amp;hl=en_US&amp;rel=0
http://www.youtube.com/embed/0zM3nApSvMg?rel=0
http://www.youtube.com/watch?v=0zM3nApSvMg&feature=feedrec_grec_index
http://www.youtube.com/watch?v=0zM3nApSvMg
http://youtu.be/0zM3nApSvMg
http://www.youtube.com/watch?v=0zM3nApSvMg#t=0m10s
http://www.youtube.com/user/IngridMichaelsonVEVO#p/a/u/1/QdK8U-VIH_o
https://www.youtube.com/watch?v=0zM3nApSvMg#t=0m10s
https://www.youtube.com/user/IngridMichaelsonVEVO#p/a/u/1/QdK8U-VIH_o
http://vimeo.com/36888803
http://vimeo.com/36888803?title=0
http://player.vimeo.com/video/36888803
http://player.vimeo.com/video/36888803?title=0&amp;byline=0&amp;portrait=0
http://youtu.be/i4fjHzCXg6c
http://youtu.be/i4fjHzCXg6c?t=9s
http://www.youtube.com/watch?v=i4fjHzCXg6c
https://www.youtube.com/watch?v=i4fjHzCXg6c&feature=g-logo&t=28s

任何和所有的帮助将不胜感激!

4

0 回答 0