嗨,我今天的问题是使用正则表达式来解析 url。我想首先将任何 youtube url 转换为嵌入式视频,然后将剩余的 url(只是常规链接)转换为 href 链接。我已经让这两个工作正常了,我的问题是在我转换了 youtube url 之后,第二个正则表达式替换会弄乱 youtube 视频,所以我需要做的是理想地忽略 iframe 标签。我将是第一个承认我在正则表达式方面很糟糕的人,所以我真的很感激一点帮助,我认为对于一个半正则表达式的人来说,这不会太难。
干杯,乔丹
<script type="text/javascript">
function linkifyYouTubeURLs() {
//replaces youtubeurls with iframe
var re = /https?:\/\/(?:[0-9A-Z-]+\.)?(?:youtu\.be\/|youtube\.com(?:\/embed\/|\/v\/|\/watch\?v=|\/ytscreeningroom\?v=|\/feeds\/api\/videos\/|\/user\S*[^\w\-\s]|\S*[^\w\-\s]))([\w\-]{11})[?=&+%\w-]*/ig;
document.getElementById('CPH_Main_postContent').innerHTML = document.getElementById('CPH_Main_postContent').innerHTML.replace(re, '<br><iframe title="YouTube video player" class="youtube-player" type="text/html" width="425" height="350" src="http://www.youtube.com/embed/$1" frameborder="0"> </iframe><br>');
//replaces urls with links
var exp = /(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig;
document.getElementById('CPH_Main_postContent').innerHTML = document.getElementById('CPH_Main_postContent').innerHTML.replace(exp, "<a href='$1'>$1</a>");
}