2010-11-10 33 views
1

J'utilise une fonction extrêmement moche dans jQuery pour écouter sur un événement paste et supprimer toute mise en forme HTML étrangère de la pâte. Malheureusement, ce que j'ai maintenant est trop strict, en plus d'être juste moche.jQuery Regex pour extraire tout le HTML sauf br, gras, italique, et

Je souhaite améliorer cette expression régulière pour permettre le même HTML que celui que j'autorise déjà dans l'éditeur WYSIWYG. Cela signifie que je voudrais avoir <b>, <i>, <br>, et <a> tags autorisés.

Je ne connais pas assez regex pour le faire moi-même, et je serais très reconnaissant de voir cela amélioré.

$('iframe').ready(function() { 
    $(this).contents().find('.wysiwyg').find('iframe').contents() 
    .find('.wysiwyg').bind('paste', function() { 
    var el = $(this); 
    setTimeout(function() { 
     var strClean = el.text().replace(/<\/?[^>]+>/gi, ''); 
     el.text(strClean); 
    }, 0); 
    }); 
}); 

Vous pouvez voir ce code laid à l'œuvre: http://jsfiddle.net/v4LhV/3/

+5

Voici une discussion assez [populaire] (http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags) sur le sujet .. (* le l'essentiel de l'être - vous ne pouvez pas analyser (x) html avec regex *) –

+0

Excellent commentaire. Cela devrait vraiment être affiché comme une réponse, cependant. –

Répondre

2

Comme vous avez un analyseur DOM entièrement fonctionnel, à savoir le navigateur, à portée de main, pourquoi ne pas analyser simplement la chose à l'aide .html() dans un élément (hors écran), puis exécutez la suppression des éléments que vous ne voulez pas utiliser .unwrap().

+0

@ John Smith, pouvez-vous s'il vous plaît fournir le travail qui a résolu votre problème. J'ai le même problème. – learning

+0

@learning - C'est Josh Smith, pas John Smith, et il vaut mieux poster un tel commentaire sur la question elle-même, car cette réponse est plus une suggestion de techniques qu'une implémentation. Bien sûr, vous pourriez suivre les mêmes suggestions ... – Orbling