6

div 内のすべての URL を検索する JavaScript コードを作成しようとしています。div 内のすべての URL がスペースで区切られていれば、これは非常に簡単です。その場合、div 内にあるものを正規表現で検索するだけです。ただし、この外側の div 内の URL はサブ div (またはその他の html タグ) にある可能性があり、サブ div もセパレーターと見なしたい (これらのサブ div を削除したくない)。例を挙げると、次の例では、ID が「outer」の div 内で www.foo.com と www.bar.com を検索します。

<div id="outer"><div>www.foo.com</div>www.bar.com</div>

これを行う良い方法は何ですか?

4

3 に答える 3

3

テキスト以外のすべての子ノードに再帰呼び出しを適用できます。

function replaceWwwInNodes(node) {
    //text node
    if (node.nodeType === 3) {
        node.textContent = node.textContent.replace(/* ??? */)
    }
    else {
        Array.prototype.forEach.call(node.childNodes, function (elem) {
            replaceWwwInNodes(elem);
        });
    }
}

replaceWwwInNodes(document.getElementById('outer'));

http://jsfiddle.net/UDX5V/

于 2013-06-05T05:59:19.557 に答える
0

このサンプルを使用してみてくださいhttp://jsfiddle.net/iklementiev/TaCx9/1/

var data = document.getElementById("outer").innerText;
var myRe = /www\.[0-9a-z-]+\.[a-z]{2,4}/igm;
var matches=  data.match(myRe)

for (var i = 0; i < matches.length; i++) {
    alert('match: ' + matches[i]);
}

これは、すべての URL を見つけるのに役立ちます。

于 2013-06-05T05:52:41.377 に答える
0

これを試して

var expression = /[-a-zA-Z0-9@:%_\+.~#?&//=]{2,256}\.[a-z]{2,4}\b(\/[-a-zA-Z0-9@:%_\+.~#?&//=]*)?/gi;
 var regex = new RegExp(expression);
var regContent = $("#outer").html();
var newContent = regContent;                                                                     
if(regContent.match(regex))
{    
    var textContent = regContent.match(regex);                                                                         
for(var i=0;i<regContent.match(regex).length;i++)
{
    newContent = newContent.replace(new RegExp(regContent.match(regex)[i], "g"), "test");
}    
$("#outer").html(newContent);
}   

これにより、すべての URL コンテンツが取得され、「test」として置き換えられます。

于 2013-06-05T06:02:38.360 に答える