0

こんにちはみんなこれに注意を払ってくれてありがとう。さて、すべての完全なyoutubeURLを単語に置き換えようとしています。例:

http://www.youtube.com/watch?v=lDC0gdrcauI Should be replaced with the word "Video"
http://www.youtube.com/watch?v=ef0wk8QoA34&feature=g-all-u Should be replaced with the word "Video"

これがこれまでの私のコードです。HTML:

<p>My brother is great.</p>
<p>http://www.youtube.com/watch?v=ef0wk8QoA34</p>

およびJS:

(function($) {

    $(function(){
    var thePage = $("body");
    thePage.html(thePage.html().replace(/My brother/g, 'My Pig').replace(/youtube.com/g, 'video'));
    });

})(jQuery)

JSFiddleはここにあります:http: //jsfiddle.net/QmRc7/2/

だから、あなたがその病気で私を助けることができれば素晴らしいです!ありがとう!

PS:申し訳ありませんが、私の投稿は私ではなく編集されました:/

解決しました!これを追加するだけで、誰にとっても素晴らしい+1になります!:

.replace(/(www.)?youtu(be\.com|\.be)\/(watch\?v=)?([A-Za-z0-9._%-]*)(\&\S+)?/g, '')
4

3 に答える 3

3

(タイトルから)あなたの質問を正しく理解している場合は、コンテンツ(テキスト)で正規表現を使用してアンカータグをフィルタリングします。

あなたはこのようにそれを行うことができます:

$('a').filter(function() {
    return $(this).text().match(/^(?:https?:\/\/)?(?:www\.)?youtube\.com\/watch\?(?=.*v=((\w|-){11}))(?:\S+)?$/g);
}).each(function() {
    $(this).text($(this).text().replace(/youtube.com/g, 'video'));
});

コードは基本的に、この回答からコピーしたyoutube urlパターンに一致するテキストを持つアンカータグを選択し、一致するアンカータグごとに。に置き換えyoutube.comますvideo


更新された質問への回答:

あなたはこのようなことをすることができます:

$('a').filter(function() {
    return $(this).text().match(/^(?:https?:\/\/)?(?:www\.)?youtube\.com\/watch\?(?=.*v=((\w|-){11}))(?:\S+)?$/g);
}).each(function() {
    $(this).text('Video');
});

非アンカータグとは一致しないことに注意してください。$('*')代わりに、$('a')すべてのノードを選択するために使用できます。


そして、2番目の単語の変更は次のように簡単に行うことができます。

$('p').each(function() {
    $(this).text($(this).text().replace(/My brother/g, 'My Pig'));
});

言うまでもなく、希望するノードに一致するようにセレクターを変更する必要があります。

于 2012-06-12T03:54:38.463 に答える
1

この正規表現は、考えられるすべてのYouTube URLパターンを取得するためにもう少し調整が必要な場合がありますが、これは良いスタートです。

http:\/\/www\.youtube\.com\/[\w?=&-]+
于 2012-06-12T03:19:19.093 に答える
0

数時間後...私はついにあなたの助けを借りてこれを解決しました。

.replace(/(www.)?youtu(be\.com|\.be)\/(watch\?v=)?([A-Za-z0-9._%-]*)(\&\S+)?/g, '')
于 2012-06-12T14:10:58.370 に答える