Estou tentando remover todas as tags html de uma string em Javascript. Aqui está o que eu tenho ... Eu não consigo descobrir por que não está funcionando ... alguém sabe o que estou fazendo de errado?
<script type="text/javascript">
var regex = "/<(.|\n)*?>/";
var body = "<p>test</p>";
var result = body.replace(regex, "");
alert(result);
</script>
Muito obrigado!
javascript
regex
Gabe
fonte
fonte
"<img src=bogus onerror=alert(1337)"
. A primeira falha porque o analisador HTML não exige que a última tag seja fechada por um>
e a segunda falha porque o carregamento da imagem começa antes mesmo de uma árvore DOM analisada ser adicionada ao DOM e$('<img ...>')
invoca o analisador HTML.>
for incluído em um valor de atributo; assim<div data="a + b > c">
Essa é uma pergunta antiga, mas me deparei com ela e pensei em compartilhar o método que usei:
sanitized
agora conterá:"some text and some more text"
Simples, não é necessário jQuery e não deve decepcioná-lo, mesmo em casos mais complexos.
fonte
innerText
temp.textContent
se existir, e apenas tentarátemp.innerText
se não existir . Seu navegador deve ter o primeiro, mas para navegadores que não têm, o último é usado no lugar :)Isso funcionou para mim.
fonte
console.log( my_html.replace(/( |<([^>]+)>)/ig, "") );
Aqui está como TextAngular (WYSISYG Editor) está fazendo isso. Também achei que esta é a resposta mais consistente, que é SEM REGEX.
fonte
você pode usar uma biblioteca poderosa para String de gerenciamento que é undrescore.string.js
=> 'um link'
=> 'a linkalert ("hello world!")'
Não se esqueça de importar esta biblioteca da seguinte forma:
fonte
minha biblioteca JavaScript simples chamada FuncJS tem uma função chamada "strip_tags ()" que faz a tarefa para você - sem exigir que você insira nenhuma expressão regular.
Por exemplo, digamos que você deseja remover tags de uma frase - com esta função, você pode fazer isso simplesmente assim:
Isso produzirá "Esta string contém muitas tags!".
Para um melhor entendimento, leia a documentação em GitHub FuncJS .
Além disso, se desejar, forneça alguns comentários por meio do formulário. Seria muito útil para mim!
fonte
strip_tags()
faz em vez de apenas promover sua biblioteca e não explicá-la? O link explica o uso da API, mas não o que ela faz .strip_tags = function(e) { var _hasTag, _tag_string; if (!(e === void 0 || e === null || e === "")) { _tag_string = e; if (typeof _tag_string === "object") { _tag_string = _tag_string.outerHTML; } _hasTag = _tag_string.match(/(<([^>]+)>)/ig); if (_hasTag) { return trim(_tag_string.replace(/(<([^>]+)>)/ig, '')); } else { return trim(_tag_string); } } else { throw new Error("The 'strip_tags' function expects one argument in the form of a string or object."); } };
Esta é uma solução para tag HTML e & nbsp etc. e você pode remover e adicionar condições para obter o texto sem HTML e pode substituí-lo por qualquer.
fonte
Para obter um sanitizador de HTML adequado em JS, consulte http://code.google.com/p/google-caja/wiki/JsHtmlSanitizer
fonte
fonte
A resposta selecionada nem sempre garante que o HTML seja removido, já que ainda é possível construir uma string HTML inválida por meio dela criando uma string como a seguinte.
Esta entrada irá garantir que a remoção monte um conjunto de tags para você e resultará em:
além disso, a função de texto do jquery removerá o texto não circundado por tags.
Aqui está uma função que usa jQuery, mas deve ser mais robusta em ambos os casos:
fonte
A maneira como eu faço isso é praticamente uma linha única.
A função cria um objeto Range e, em seguida, cria um DocumentFragment no Range com a string como conteúdo filho.
Em seguida, ele captura o texto do fragmento, remove quaisquer caracteres "invisíveis" / de largura zero e remove qualquer espaço em branco à esquerda / à direita.
Sei que essa questão é antiga, só pensei que minha solução fosse única e queria compartilhar. :)
fonte
Como outros afirmaram, regex não funcionará. Reserve um momento para ler meu artigo sobre por que você não pode e não deve tentar analisar html com regex, que é o que você está fazendo quando tenta retirar html de sua string de origem.
fonte