J'ai une chaîne et je veux valider cette chaîne afin qu'elle ne contienne pas certains caractères comme '/' '\' '&' ';' etc ... Comment puis-je faire tout cela en même temps?Validation de chaîne Javascript
Répondre
Vous pouvez résoudre ceci avec des expressions régulières!
mystring = "hello"
yourstring = "bad & string"
validRegEx = /^[^\\\/&]*$/
alert(mystring.match(validRegEx))
alert(yourstring.match(validRegEx))
correspondant contre la regex renvoie la chaîne si elle est ok, ou nul si l'invalide!
Explication:
- JavaScript RegEx littéraux sont délimités comme des chaînes, mais avec des barres obliques (
/
's) au lieu des citations ("
' s). - Le premier et le dernier caractère du
validRegEx
le font correspondre à l'ensemble de la chaîne, au lieu d'une partie, le carat l'ancre au début et le signe du dollar à la fin. - La partie entre les crochets (
[
et]
) est une classe de caractères qui correspond à n'importe quel caractère tant qu'il fait partie de la classe. Le premier caractère à l'intérieur de cela, un carat, signifie que la classe est annulée, pour correspondre aux caractères non mentionnés dans la classe de caractères. Si elle avait été omise, la classe correspondrait aux caractères qu'elle spécifie.- Les deux séquences,
\\
et\/
sont backslash parce que la barre oblique inverse par lui-même serait une séquence d'échappement pour autre chose, et la barre oblique pourrait confondre l'analyseur en pensant qu'il avait atteint la fin de la regex, (exactement similaire à l'échappement des guillemets dans les chaînes). - L'esperluette (
&
) n'a pas de signification particulière et n'est pas échappée.
- Les deux séquences,
- Le caractère restant, l'kleene étoiles, (
*
) signifie que tout précédé devrait correspondre à zéro ou plusieurs fois, de sorte que la classe de caractères va manger autant de caractères qui ne sont pas en avant ou des barres obliques inversées ou esperluettes, y compris aucune si elle n'en trouve pas. Si vous voulez vous assurer que la chaîne correspondante n'est pas vide, vous pouvez la remplacer par un plus (+
).
Ummm ... sauf JavaScript regex n'a pas de fonction 'match', seulement' test'. –
@LawrenceDol: '.match()' est utilisé sur un 'String', pas sur' RegExp'. Qu'est-ce qui se passe quand vous l'avez essayé? – SingleNegationElimination
@Singe: OK, j'ai raté cette subtilité. Je suis venu ici à la recherche d'une solution dans une perspective regex. Merci. –
J'utiliserais des expressions régulières.
Voir this guide de Mozillla.org. Ce article donne également une bonne introduction aux expressions régulières en JavaScript.
Here est un bon article sur la validation Javascript. Rappelez-vous que vous devrez également valider sur le serveur. La validation de Javascript peut facilement être contournée, ainsi elle ne devrait jamais être employée pour des raisons de sécurité telles qu'empêcher l'injection de SQL ou les attaques de XSS.
Vous pouvez utiliser regex. Par exemple si votre chaîne correspond:
[\\/&;]+
alors ce n'est pas valide. Regardez: http://www.regular-expressions.info/javascriptexample.html
Vous pourriez probablement utiliser un regular expression.
Vous pouvez utiliser la méthode d'essai, avec des expressions régulières:
function validString(input){
return !(/[\\/&;]/.test(input));
}
validString('test;') //false
Vous pourrait apprendre des expressions régulières, ou (probablement plus simple si vous vérifiez que pour un seul caractère à la fois), vous pourriez avoir une liste de caractères, puis une sorte de sanitize
fonction pour supprimer chacun de la chaîne.
var myString = "An /invalid &string;";
var charList = ['/', '\\', '&', ';']; // etc...
function sanitize(input, list) {
for (char in list) {
input = input.replace(char, '');
}
return input
}
Alors:
sanitize(myString, charList) // returns "An invalid string"
Comme les autres ont répondu que vous pouvez résoudre cela avec regexp mais rappelez-vous de vérifier également le côté serveur de valeur. Il n'y a aucune garantie que l'utilisateur a JavaScript activé. Ne faites jamais confiance aux commentaires des utilisateurs!
- 1. Validation Javascript ou validation ASP?
- 2. javascript: validation de clé
- 3. validation, javascript
- 4. javascript - validation de l'espace vide
- 5. jQuery/JavaScript Validation de formulaire de date
- 6. javascript validation pour l'adresse
- 7. Comment générer dynamiquement la validation de chaîne?
- 8. Question de validation/javascript de base
- 9. javascript Validation de textarea à entrées multiples
- 10. validation de formulaire javascript en ligne
- 11. Javascript Validation de la date pour Asp.net
- 12. Javascript/manipulation de chaîne jQuery?
- 13. de tableau JavaScript à chaîne
- 14. Validation d'expressions régulières (test) en JavaScript
- 15. Chaîne exacte avec JavaScript
- 16. Outil de validation jQuery - Chaîne de texte exacte Méthode
- 17. Ajouter son propre javascript à la validation
- 18. validation des caractères spéciaux en utilisant JavaScript
- 19. Validation Javascript: Bloquer les caractères spéciaux
- 20. validation Javascript et l'affichage en même temps
- 21. problème de remplacement de chaîne JavaScript
- 22. Vérification de contenu de chaîne avec Javascript
- 23. Javascript ne remplacera pas la chaîne
- 24. javascript Validation de plusieurs zones de texte d'entrée
- 25. Ecriture d'une fonction de validation de code postal JavaScript
- 26. extraction de chaîne Javascript/reg exp aide
- 27. Définir la chaîne de ressource dans javascript
- 28. Javascript extrait le numéro de la chaîne
- 29. JavaScript ou Java chaîne Soustraction
- 30. assign chaîne javascript sans échapper
Plutôt que de vérifier la présence d'une liste noire de caractères interdits, il est préférable de vérifier la chaîne par rapport à une liste blanche de caractères autorisés, par ex. autorisant uniquement les caractères alphanumériques. –