2016-07-19 9 views
0

私は昨日質問します。タグ名のみを削除する方法、そしてjqueryを使用して昨日の内容を含むタグ名を削除する方法について説明します。javascript:誰かがコードを説明できます

と答えは正規表現を使用しています。

誰かがちょうど私の正規表現の部分の下のコードを説明することができますか?

私はすでに正規表現についての記事を読んでいますが、私はそれをはっきり理解できていないと思います。

可能であれば、私はそれをc#コードに変換したいが、コードを完全に理解していないため、まだできない。

最初のコードは、私が最初のコードでundertandいけないものを

$(function() { 
    function removeNode(str, nodeName) { 
    var pattern = '<'+nodeName+'>[\\s\\w]+<\/'+nodeName+'>'; 
    var regex = new RegExp(pattern, 'gi'); 
    return str.replace(regex, '').replace(/^\s*[\r\n]/gm, ''); 
    } 

ありがとう「GIは」から来たんどこにあるのでしょうか? リターン

var regex = new RegExp(pattern, 'gi'); 
     return str.replace(regex, '').replace(/^\s*[\r\n]/gm, ''); 

第コード

$(function() { 
    function removeNodeButRetain(str, nodeName) { 
    var pattern = '<\/?'+nodeName+'>'; 
    var regex = new RegExp(pattern, 'gi'); 
    return str.replace(regex, '').replace(/^\s*[\r\n]/gm, ''); 
    } 

    what i dont understand is the 

var regex = new RegExp(pattern, 'gi'); 
     return str.replace(regex, '').replace(/^\s*[\r\n]/gm, ''); 

第3のコード

jQuery(document).ready(function(){ 
textval = $('textarea').val(); 
textnewval = textval.replace('Para TextBreak="No"', 'p').replace('/Para', '/p'); 

    if(textnewval.indexOf('Italic') >= 0) //If Italic 
{ 
    EmphasisAttr = 'Italic'; 
    textnewval = textnewval.replace('Emphasis Type="'+EmphasisAttr+'"', 'i').replace('/Emphasis', '/i'); 
} 
if(textnewval.indexOf('Bold') >= 0) //If Bold 
{ 
    EmphasisAttr = 'Bold'; 
    textnewval = textnewval.replace('Emphasis Type="'+EmphasisAttr+'"', 'b').replace('/Emphasis', '/b'); 
} 
if(textnewval.indexOf('Underline') >= 0) //If underline 
{ 
    EmphasisAttr = 'Underline'; 
    textnewval = textnewval.replace('Emphasis Type="'+EmphasisAttr+'"', 'u').replace('/Emphasis', '/u'); 
} 


    $('textarea').val(textnewval); 
    alert($('textarea').val()); 
}); 
+2

このサイトhttp://regexr.comで正規表現と一致するものが見つからない場合は、参考にしているものとライブのために正規表現を使用する必要があるときはいつでも使用します正規表現のパターンをテストできるプレイグラウンド –

+0

あなたは私にこの部分を教えてもらえますか? var regex = new RegExp(パターン、 'gi'); return str.replace(regex、 '').replace(/^\ s * [\ r \ n]/gm、 ''); – askquestionzero

+0

最初の行はパターンとgとiフラグを持つ新しい正規表現を作成し、最後のパターンは一致パターンの置換を使用します –

答えて

4

正規表現:

http://regexr.com/3dr56

は、以下を言うから成る任意のノードに一致します

function removeNode(str, nodeName) { 
 
    var pattern = '<'+nodeName+'>[\\s\\w]+<\/'+nodeName+'>'; 
 
    var regex = new RegExp(pattern, 'gi'); 
 
    return str.replace(regex, '').replace(/^\s*[\r\n]/gm, ''); 
 
} 
 

 
console.log("Node: <div>hello world</div>"); 
 

 
var str = removeNode("hello world", "div"); 
 

 
console.log("String returned: " + str);

ある:

ノード一致:<div>hello world</div>

removeNode("hello world", "div");は戻ります:01関数に渡されたパラメータは、その提供

<div>hello world</div>

hello world

関数自体は、ノード内stringを返します。

さらに詳しい情報はRegular Expressionsをご覧ください。

2

ここでは、jQueryだけを使って解決した解決策があります。

あなたはサーバー側のXMLパーサと似たような

データは検索に使用され、置き換えを行うことができ:

// selector = jQuery selector, final = replacement element 
    var tags = [{ 
     selector: 'emphasis[Type="Italic"]', 
     final: '<i>' 
    }, { 
     selector: 'emphasis[Type="Bold"]', 
     final: '<strong>'// note <b> is deprecated 
    }, { 
     selector: 'emphasis[Type="Underline"]', 
     final: '<u>' 
    }, { 
     selector: 'para', 
     final: '<p>' 
    } 
    ]; 

パーサ:

$(function() { 

    // get string to parse 
    var str = $('#txtArea').val(); 
    // inject in temporary div 
    var $tempdiv = $('<div>').html(str); 
    // loop over all the tags to replace 
    $.each(tags, function(_, tag) { 
    // loop and replace instances of tags 
    $tempdiv.find(tag.selector).replaceWith(function() { 
     return $(tag.final).html($(this).html()) 
    }); 
    }); 
    // get final string from temp div 
    var finalString = $tempdiv.html() 
    // update textarea 
    $('#final').val(finalString); 
}); 

DEMO

関連する問題