jQuery: Vérifier si les caractères spéciaux il existe dans la chaîne de
Je sais que cette question est posée plus souvent ici sur la Pile, mais je n'arrive pas à obtenir une réponse directe de l'questions déjà posté.
J'ai besoin de vérifier si tous les caractères spéciaux (à l'exception de -) sont dans une chaîne de caractères, si oui, donner à l'utilisateur une alerte.
Ce que j'ai jusqu'à présent est: est-ce
if($('#Search').val().indexOf('@') == -1 || $('#Search').val().indexOf('#') == -1 || $('#Search').val().indexOf('$') == -1 || $('#Search').val().indexOf('%') == -1 || $('#Search').val().indexOf('^') == -1 || $('#Search').val().indexOf('&') == -1 || $('#Search').val().indexOf('*') == -1 || $('#Search').val().indexOf('(') == -1 || $('#Search').val().indexOf(')') == -1 || $('#Search').val().indexOf('_') == -1 || $('#Search').val().indexOf('\'') == -1 || $('#Search').val().indexOf('\"') == -1 || $('#Search').val().indexOf('\\') == -1 || $('#Search').val().indexOf('|') == -1 || $('#Search').val().indexOf('?') == -1 || $('#Search').val().indexOf('/') == -1 || $('#Search').val().indexOf(':') == -1 || $('#Search').val().indexOf(';') == -1 || $('#Search').val().indexOf('!') == -1 || $('#Search').val().indexOf('~') == -1 || $('#Search').val().indexOf('`') == -1 || $('#Search').val().indexOf(',') == -1 || $('#Search').val().indexOf('.') == -1 || $('#Search').val().indexOf('<') == -1 || $('#Search').val().indexOf('>') == -1 || $('#Search').val().indexOf('{') == -1 || $('#Search').val().indexOf('}') == -1 || $('#Search').val().indexOf('[') == -1 || $('#Search').val().indexOf(']') == -1 || $('#Search').val().indexOf('+') == -1 || $('#Search').val().indexOf('=') == -1)
{
//Code that needs to execute when none of the above is in the string
}
else
{
alert('Your search string contains illegal characters.');
}
Mais cela ne semble pas fonctionner... quelqu'un Peut m'aider sur cette question?
Merci d'avance!
Guido
- Vous avez besoin d'utiliser une expression régulière ici, au lieu d'un bazillion conditions distinctes. Et vous certainement ont à dire exactement comment il "ne semble pas fonctionner".
- Voir ce peut être vous aider stackoverflow.com/questions/10505772/...
Vous devez vous connecter pour publier un commentaire.
Si vous voulez vraiment pour vérifier tous ces caractères spéciaux, il est plus facile d'utiliser une expression régulière:
Le ci-dessus ne permettent chaînes entièrement composé de caractères sur les plages
a-z
,A-Z
,0-9
, plus le trait d'union un espace de caractères. Une chaîne de caractères contenant n'importe quel autre caractère sera la cause de laalert
.é
etñ
, mais si vous n'avez pas besoin pour leur permettre je crois que c'est le chemin à parcourir./[^a-zA-Z0-9- ]*$/
au lieu de/^[a-zA-Z0-9- ]*$/
?^
nie la liste au lieu de définir le début de la chaîne.Vous pouvez également utiliser la liste blanche de la méthode
La regex dans cet exemple est des chiffres, des caractères de mot, des traits de soulignement (\w) et espace (\s). L'accent circonflexe (^) indique que nous sommes à regarder pour tout ce qui n'est pas dans notre regex, donc chercher des choses qui ne sont pas des caractères de mot, des traits de soulignement, des chiffres et des espaces blancs.
== true
? Ne serait pasif(regex.test(str)) { [...] }
suffit-il?Vous de vérifier si la chaîne contient des tous caractères illégaux. Modifier la
||
s à&&
s.