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]和匹配[1]以用于以后的用途,例如title属性。
任何人都可以帮忙吗?
这是使用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)的数据以供以后使用。
请不要说它错了,请提出一些有用的评论,例如可能出现的问题,因为它确实无法使用它,就像我应该用于以后的目的。
答案 0 :(得分:2)
我接受了您的表达式\(((\s*?.*?)*?)\)
,它对您的示例文本www.youtube.com/v/dje838329(titleOfMovie)
起作用。我确实做了一些小改动:
正则表达式:\(([^)]*)\)
\(
匹配开放的paran (
启动您的捕获组
[^)]*
匹配所有非关闭的paran字符)
结束捕获组\)
匹配关闭的paran
示例文字
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)
格式的标题,那么这将无法匹配
答案 1 :(得分:1)
使用
.match()
返回0未定义的
这不是你得到的错误。问题是您正在访问match result的0
属性,当正则表达式不匹配时,该属性可能是null
。在尝试获得结果之前,您必须对此进行测试。
使用
replace
工作,但我需要得到它,所以我可以使用match [0]并匹配[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"/>';
});