1
 var v = $(forum[yourVersion]+' a[href*="youtube.com/v/"]');
   for ( i = 0; i < v.length; i++) {
     var match = v[i].href.match(/\(((\s*?.*?)*?)\)/);
     v[i].href = v[i].href.replace(match[0],'');
     var c = v[i].href.replace(/(www\.)?youtube.com/, 'img.youtube.com');
     var d = c.replace('v','vi');
     v[i].outerHTML= '<a class="uTubeE" rel="vid_gallery" title="'+match[1]+'" href="' + v[i].href + '"><span class="uTubeE_overlay"></span><img src="'+ d +'/0.jpg"/>';
     v[i].className='uTubeE';
    }

我正试图让这两个工作正常,早些时候有人帮助我记住.match()并这样做 -

var match = v[i].href.replace(/\(((\s*?.*?)*?)\)/,''); 

当然这有效,但我需要得到它,以便我可以使用 match[0] 和 match[1] 以供以后使用,例如标题属性。

有人能帮忙吗?

这是使用 youtube 视频的默认缩略图

     var c = v[i].href.replace(/(www\.)?youtube.com/, 'img.youtube.com');
     var d = c.replace('v','vi');

我匹配的网址是说www.youtube.com/v/dje838329,但网址会出现 www.youtube.com/v/dje838329(titleOfMovie)

我正在尝试获取 (titleOfMovie) 的数据以供以后使用。

不要说它是错误的,而是请提出一些有用的评论,例如可能出了什么问题,因为它确实有效,但不能像我应该的那样使用它用于以后的目的。

4

2 回答 2

2

我接受了你的表达\(((\s*?.*?)*?)\),它对你的示例文本起作用www.youtube.com/v/dje838329(titleOfMovie)。我确实对它做了一些小改动:

正则表达式:\(([^)]*)\)

  • \(匹配开放参数
  • (开始你的捕获组
    • [^)]*匹配所有非关闭的 paran 字符
    • )结束捕获组
  • \)匹配关闭参数

在此处输入图像描述

Javascript代码示例:

示例文本

www.youtube.com/v/dje838329(title of the movie)**

代码

<script type="text/javascript">
  var re = /\(([^)]*)\)/;
  var sourcestring = "source string to match with pattern";
  var matches = re.exec(sourcestring);
  for (var i=0; i<matches.length; i++) {
    alert("matches["+i+"] = " + matches[i]);
  }
</script>

捕获组

[0] => (title of the movie)
[1] => title of the movie

免责声明

当然,如果字符串没有(name of the movie)格式中的标题,这将无法匹配

于 2013-07-01T01:37:56.917 回答
1

使用.match()返回 0 of undefined

这不是你得到的错误。问题是您正在访问匹配结果0的属性,这可能是正则表达式不匹配时。在尝试获得结果之前,您必须对此进行测试。null

使用replace工作,但我需要得到它,以便我可以使用 match[0] 和 match[1] 供以后使用

您可以尝试使用替换功能,但这会变得很难看。你match很好,特别是因为你没有做任何花哨的操作。只需获取其匹配索引并切片您的网址。

顺便说一句,如果你有可用的 jQuery,你真的应该使用它。

var v = $(forum[yourVersion]+' a[href*="youtube.com/v/"]').each(function() {
    var url = this.href,
        match = url.match(/\(((\s*?.*?)*?)\)/);
    if (match == null)
        return; // abort!
    var d = url.replace(/(www\.)?youtube.com\/v/, 'img.youtube.com/vi');
    this.href = url.slice(0, match.index);
    this.className = "uTubeE"
    this.rel = "vid_gallery";
    this.title = match[1];
    this.innerHTML = '<span class="uTubeE_overlay"></span><img src="'+ d +'/0.jpg"/>';
});
于 2013-07-01T01:52:54.767 回答