我一直在尝试找到一个正则表达式模式来用 iframe 嵌入代码(C#)替换字符串中的所有 youtube URL。显然必须提取视频 ID。以下是应匹配的 url 模式:
- http://www.youtube.com/watch?v=bSiDLCf5u3s http://www.youtube.com/watch?v=bSiDLCf5u3s
- https://www.youtube.com/watch?v=bSiDLCf5u3s https://www.youtube.com/watch?v=bSiDLCf5u3s
- http://youtu.be/bSiDLCf5u3s http://youtu.be/bSiDLCf5u3s
- www.youtube.com/watch?v=bSiDLCf5u3s
- youtu.be/bSiDLCf5u3s
- www.youtube.com/watch?feature=player_embedded&v=bSiDLCf5u3s
所有可能的网址应替换为:
<iframe title='YouTube video player' width='480' height='390' src='http://www.youtube.com/embed/VIDEO_ID_EXTRACTED' frameborder='0' allowfullscreen='1'></iframe>
有人可以指出我正确的方向吗?
先感谢您
这是正则表达式:
(?:https?:\/\/)?(?:www\.)?(?:(?:(?:youtube.com\/watch\?[^?]*v=|youtu.be\/)([\w\-]+))(?:[^\s?]+)?)
应匹配您发布的所有链接并将视频 ID 提取为$1
。并使用以下代码将链接替换为<iframe/>
:
const string input = "http://www.youtube.com/watch?v=bSiDLCf5u3s " +
"https://www.youtube.com/watch?v=bSiDLCf5u3s " +
"http://youtu.be/bSiDLCf5u3s " +
"www.youtube.com/watch?v=bSiDLCf5u3s " +
"youtu.be/bSiDLCf5u3s " +
"http://www.youtube.com/watch?feature=player_embedded&v=bSiDLCf5u3s " +
"www.youtube.com/watch?feature=player_embedded&v=bSiDLCf5u3s " +
"http://www.youtube.com/watch?v=_-QpUDvTdNY";
const string pattern = @"(?:https?:\/\/)?(?:www\.)?(?:(?:(?:youtube.com\/watch\?[^?]*v=|youtu.be\/)([\w\-]+))(?:[^\s?]+)?)";
const string replacement = "<iframe title='YouTube video player' width='480' height='390' src='http://www.youtube.com/embed/$1' frameborder='0' allowfullscreen='1'></iframe>";
var rgx = new Regex(pattern);
var result = rgx.Replace(input, replacement);
// result ==
// <iframe title='YouTube video player' width='480' height='390' src='https://www.youtube.com/embed/bSiDLCf5u3s' frameborder='0' allowfullscreen='1'></iframe>
// ...
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)