web-dev-qa-db-fra.com

Vérifier si la chaîne ne contient que des lettres en javascript

Alors j'ai essayé ceci:

if (/^[a-zA-Z]/.test(Word)) {
   // code
}

Il n'accepte pas ceci: " "

Mais il accepte ce: "Word word", qui contient un espace: /

Y at-il un bon moyen de le faire?

27
DennisvB

Avec /^[a-zA-Z]/ vous ne cochez que le premier caractère:

  • ^: Assert la position au début de la chaîne
  • [a-zA-Z]: correspond à un seul caractère présent dans la liste ci-dessous:
    • a-z: un caractère compris entre "a" et "z"
    • A-Z: un caractère compris entre "A" et "Z"

Si vous voulez vérifier si tous les caractères sont des lettres, utilisez ceci à la place:

/^[a-zA-Z]+$/.test(str);
  • ^: Assert la position au début de la chaîne
  • [a-zA-Z]: correspond à un seul caractère présent dans la liste ci-dessous:
    • +: entre une et plusieurs fois, autant que possible, en rendant au besoin (gourmand)
    • a-z: un caractère compris entre "a" et "z"
    • A-Z: un caractère compris entre "A" et "Z"
  • $: Assert la position à la fin de la chaîne (ou avant le saut de ligne à la fin de la chaîne, le cas échéant)

Ou, en utilisant l’indicateur insensible à la casse i, vous pouvez le simplifier pour:

/^[a-z]+$/i.test(str);

Ou, puisque vous ne voulez que test, et non match, vous pouvez vérifier le contraire et l'annuler:

!/[^a-z]/i.test(str);
75
Oriol

Vous avez besoin

/^[a-zA-Z]+$/

Actuellement, vous faites correspondre un seul caractère au début de la saisie. Si votre objectif est de faire correspondre les lettres (un ou plusieurs) du début à la fin, vous devez répéter la correspondance de caractère a-z (en utilisant +) et spécifier que vous voulez faire correspondre tout le chemin jusqu'à la fin (via $).

6
JDB

Le moyen le plus rapide est de vérifier s’il existe une non-lettre:

if (!/[^a-zA-Z]/.test(Word))

Essaye ça

var Regex='/^[^a-zA-Z]*$/';

 if(Regex.test(Word))
 {
 //...
 }

Je pense que cela fonctionnera pour vous.

0
Raji