Je veux empêcher les utilisateurs d'entrer des URL (comme un href="") dans un champ de texte.
Je veux utiliser un validateur d'expressions régulières mais je ne sais pas quoi écrire ?
Comment puis-je le faire ?
Je veux empêcher les utilisateurs d'entrer des URL (comme un href="") dans un champ de texte.
Je veux utiliser un validateur d'expressions régulières mais je ne sais pas quoi écrire ?
Comment puis-je le faire ?
Javascript + regex le fera, mais il n'y a pas de méthode de code standard que je puisse vous indiquer.
La chose importante à retenir, cependant, est que quoi que vous fassiez, vous ne pouvez pas empêcher les utilisateurs de soumettre une requête à votre serveur avec les mauvais éléments. Cela signifie que tout ce que vous faites sur le navigateur Web du client avec le javascript n'est qu'un pansement et est là pour aider vos utilisateurs à savoir où se trouvent les lignes. Ce n'est pas le véritable code de sécurité. Le véritable code de sécurité doit être sur votre serveur. C'est là que vous devez savoir comment traiter des choses comme les adresses web saisies dans une zone de texte.
Voulez-vous dire que vous voulez littéralement les empêcher d'entrer le texte href="
dans la TextBox, ou vous voulez empêcher les URLs ? Quoi qu'il en soit, un RegexValidator est une solution :
En fait, pour autant que je sache, il n'y a pas de moyen très simple d'utiliser un validateur OOTB-regex pour faire un contenu négatif (c'est-à-dire "fail if any match"). Quelqu'un de plus intelligent pourra peut-être me corriger sur ce point. Mais vous pouvez certainement utiliser un validateur personnalisé :
<asp:TextBox runat="server" id="myTextBox" />
<asp:CustomValidator runat="server" OnServerValidate="ValidateNoUrls" ControlToValidate="myTextBox" ErrorMessage="URLs not allowed" />
Codebehind :
protected void ValidateNoUrls(object sender, ServerValidateEventArgs e)
{
e.IsValid = !Regex.IsMatch(e.Value, @"(ht|f)tp(s?)\:\/\/[0-9a-zA-Z]([-.\w]*[0-9a-zA-Z])*(:(0-9)*)*(\/?)([a-zA-Z0-9\-\.\?\,\'\/\\\+&%\$#_]*)?");
}
Comme vous mentionnez ASP.NET, vous pourriez essayer un validateur Regex qui vérifie l'entrée pour s'assurer qu'aucun modèle d'URL n'est présent. Jetez un coup d'œil à ceci Article de MSDN .
Cette regex devrait faire l'affaire : @"^(?!.*(mailto\:|(news|(ht|f)tp(s?))\://).*).*$"
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.