Je sais que cette question est posée plus souvent ici sur Stack, mais je n'arrive pas à obtenir une réponse directe à partir des questions déjà posées.
Je dois vérifier si tous les caractères spéciaux (sauf -) sont dans une chaîne. Dans l'affirmative, donnez une alerte à l'utilisateur.
Ce que j'ai jusqu'ici est ceci:
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-il m'aider à ce sujet?
Merci d'avance!
Guido
Si vous voulez vraiment vérifier tous ces caractères spéciaux, il est plus facile d'utiliser une expression régulière:
var str = $('#Search').val();
if(/^[a-zA-Z0-9- ]*$/.test(str) == false) {
alert('Your search string contains illegal characters.');
}
Ce qui précède autorise uniquement les chaînes composées entièrement de caractères sur les plages a-z
, A-Z
, 0-9
, plus le trait d'union, un espace. Une chaîne contenant un autre caractère causera le alert
.
var specialChars = "<>@!#$%^&*()_+[]{}?:;|'\"\\,./~`-="
var check = function(string){
for(i = 0; i < specialChars.length;i++){
if(string.indexOf(specialChars[i]) > -1){
return true
}
}
return false;
}
if(check($('#Search').val()) == false){
// Code that needs to execute when none of the above is in the string
}else{
alert('Your search string contains illegal characters.');
}
Vous pouvez également utiliser la méthode de liste blanche -
var str = $('#Search').val();
var regex = /[^\w\s]/gi;
if(regex.test(str) == true) {
alert('Your search string contains illegal characters.');
}
L'expression régulière dans cet exemple est chiffres, caractères Word, traits de soulignement (\ w) et espaces (\ s). Le caret (^) indique que nous devons rechercher tout ce qui ne se trouve pas dans notre expression rationnelle. Recherchez donc des éléments qui ne sont pas des caractères Word, des traits de soulignement, des chiffres et des espaces.
Vous vérifiez si la chaîne contient tous caractères illégaux. Changer la ||
s à &&
s.