6
votes

Utilisation de Regex pour supprimer les étiquettes de script

J'essaie d'utiliser une expression de regex que j'ai trouvée sur ce site Web et cela ne semble pas fonctionner. Toutes idées?

String d'entrée : xxx

regex : xxx


5 commentaires

Vous ne devez pas utiliser regex pour essayer de parse html: HTML n'est pas assez régulier ;; Au lieu de cela, vous devez utiliser un analyseur HTML - comme sur la base de DOM.


On dirait que vous n'avez pas lu cet article expliquant comment utiliser Regex pour analyser HTML: Stackoverflow.com/questions/1732348/...


Voir la réponse de S.Mark. Mais dans l'ensemble, ce n'est pas une bonne regex et de toute façon, les regexes ne conviennent pas vraiment pour cela.


@Pascal Martin: Il ne veut pas analyser, simplement supprimer du texte. Ne vois pas une différence?


Tim et Pascal sont corrects. Chaque fois que j'écris du code pour rechercher des constructions HTML dangereuses, j'utilise toujours un DOM, jamais une regex. Si pour aucune autre raison il y a tellement de façons d'échapper à HTML, il est presque impossible de regex.


4 Réponses :


9
votes

Ajouter RegexoptionS.SinglineLine Code>

<script
>
alert(1)
</script
/**/
>


2 commentaires

Merci. Toute autre recommandation concernant les packages C # tels que l'agilité à analyser HTML ???


singleline est l'option que vous voulez; Il permet . correspondre à la ligne de ligne. multiligne causes $ et ^ correspondant avant et après (respectivement) lignes lignes; C'est sans importance ici.



8
votes

La raison pour laquelle la regex échoue est que votre entrée a Newlines et le méta caractère . ne correspond pas pas.

Pour résoudre ce problème, vous pouvez utiliser le REGEXOPTIONS.SINGLLINE OPTION AS S.MARK DITES, OU Vous pouvez modifier la regex à: xxx

utilisé [\ d \ d] < / code> au lieu de . .

\ d est un chiffre et \ d est n'importe quel non-chiffre, donc [\ d \ d] est un chiffre ou un non-chiffre qui est efficacement tout char.


1 commentaires

Merci. Est-ce une solution aussi pour les étiquettes de script imbriquées?



2
votes

Ceci est un peu plus court: xxx

ou xxx


4 commentaires

Merci. Est-ce une solution aussi pour les étiquettes de script imbriquées?


Oui, absolument parce que les scripts ne sont jamais imbriqués.


Ils peuvent être imbriqués d'une manière, en fait. Par exemple, si une personne attribue une variable comme var a = "