429 votes

Comment dire si une chaîne contient un certain caractère en javascript ?

J'ai une page avec une zone de texte où l'utilisateur est censé saisir un code d'enregistrement de 24 caractères (lettres et chiffres, insensible à la casse). J'ai utilisé maxlength pour limiter l'utilisateur à la saisie de 24 caractères.

Les codes d'enregistrement sont généralement donnés sous forme de groupes de caractères séparés par des tirets, mais j'aimerais que l'utilisateur puisse saisir les codes sans les tirets.

Comment puis-je écrire mon code Javascript avec ou sans jQuery pour vérifier qu'une chaîne donnée que l'utilisateur saisit ne contient pas de tirets, ou mieux encore, ne contient que des caractères alphanumériques ?

2 votes

La réponse se trouve ici stackoverflow.com/questions/3192612 a l'information sur la façon de valider sur alphanumérique.

1 votes

Et pour apprendre les expressions régulières : expressions régulières.info

0 votes

Pour les utilisateurs de Jquery, vous devriez et pourriez utiliser les éléments suivants inArray .

698voto

Kevin Points 57797

Pour les tirets

if(your_string.indexOf('-') === -1)
{
  alert("no dash found.");
}

Pour les alphanumériques, vous pouvez utiliser une expression régulière :

http://www.regular-expressions.info/javascript.html

Expression régulière alphanumérique

0 votes

C'était très utile. En tant que programmeur python, je l'utilise pour remplacer le mot-clé "in" (ce qui n'est peut-être pas très orthodoxe, je n'en suis pas sûr), mais cela fonctionne pour plus qu'un seul caractère.

1 votes

Je ne comprends pas comment cela a été voté lors de la réponse. Je vois que beaucoup de gens viennent ici en utilisant Google. Une meilleure méthode serait sans aucun doute d'utiliser une expression régulière.

34 votes

Vous utiliseriez une expression régulière pour vérifier un seul caractère ? C'est une quantité excessive de frais généraux pour obtenir exactement la même chose que la fonction intégrée. Il y a beaucoup de gens qui ne comprennent pas les expressions régulières, et généralement la réponse la plus simple est la meilleure.

70voto

cdhowie Points 62253

Si vous avez le texte dans la variable foo :

if (! /^[a-zA-Z0-9]+$/.test(foo)) {
    // Validation failed
}

Ceci va tester et s'assurer que l'utilisateur a saisi au moins un caractère, et a saisi uniquement caractères alphanumériques.

20voto

Solutioner Points 577

La méthode correcte pour vérifier si une chaîne de caractères (mot, phrase, etc...) contient un mot spécifique (caractère, symbole, etc...).

var inputString = "this is home";
var findme = "home";

if ( inputString.indexOf(findme) > -1 ) {
  out.print( "found it" );
} else {
  out.print( "not found" );
}

0 votes

Est-ce que cela fonctionne sur IE ? stackoverflow.com/questions/3480771/

8voto

Gaby aka G. Petrioli Points 85891

Utilisez une expression régulière pour y parvenir.

function isAlphanumeric( str ) {
 return /^[0-9a-zA-Z]+$/.test(str);
}

1 votes

Ceci vérifiera exactement un et n'acceptera pas tous les caractères alphanumériques, comme le souhaite le PO.

1 votes

@cdhowie j'ai oublié un +, mais j'avais mal lu la question aussi merci de me le signaler.

5voto

fairfieldt Points 101

Pour tester uniquement les caractères alphanumériques :

if (/^[0-9A-Za-z]+$/.test(yourString))
{
    //there are only alphanumeric characters
}
else
{
    //it contains other characters
}

La regex recherche 1 ou plusieurs (+) des caractères 0-9, A-Z et a-z, en commençant par le début de l'entrée (^) et en terminant par la fin de l'entrée ($).

Prograide.com

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.

Powered by:

X