Regex seulement des lettres de validation pour javascript invite
J'ai une page où une fenêtre d'invite de commande s'ouvre et invite l'utilisateur à entrer leur nom et prénom. Je suis en train d'écrire la validation de la fenêtre d'invite. cliquer sur annuler ou laisser vide fonctionne très bien, mais ce que je suis bloqué sur est de s'assurer que l'utilisateur entre des lettres seulement. Ci-dessous est ce que j'ai.
var alphaExp = /^[0-9a-zA-Z]+$/;
var name=prompt("Enter your first and last name please.","");
if (name==null || name=="")
{
alert("First and last name must be filled out!");
location.reload(true);
}
else if (name==alphaExp)
{
alert("Name must contain letters only!")
location.reload(true);
}
Si j'ai frappé annuler ou laissez le champ vide, je suis averti que le champ doit être rempli et l'actualisation de la page, mais si je entrer un nombre ou un caractère spécial, il l'accepte et me ramène à la page, qu'il ne devrait pas.
J'ai essayé de changer
else if (name==alphaExp)
à
else if (name!=alphaExp)
mais qui semblait donner l'effet inverse de ce que je voulais, et n'acceptaient rien.
Ce qui me manque ici?
Aussi, si la déclaration que j'ai à écrire pour s'assurer que l'utilisateur entre au moins deux noms? c'est à dire doit être de 1 lettre + un espace + 1 lettre. des suggestions?
- Oh, génial, encore plus mensonges qui illusion programmeurs croire au sujet des noms de personnes. Ils sont tout simplement pas vrai. Ne pas faire de stupide hypothèses à propos des noms de personnes! de toute façon
[A-Z]
est un hurlement fort antipattern; il est “toujours tort, parfois” comme aujourd'hui: William MᶜKinley, Martin O'Malley, le Roi Henriⅷ, François Mitterrand, Federico Peña, Nicolae Ceaușescu, Ævar Arnfjörð Bjarmason, et Dominique Gaston André Strauss-Kahn tous rire à votre chétif cassé regex! - Superbe exemple de! Aussi n'oubliez pas sur toutes ces arabe, géorgien, Cyrillique, Japonais, Chinois et tous les autres alphabets les gens sont habitués...
Vous devez vous connecter pour publier un commentaire.
Vous avez besoin
Cependant noter que dans
alphaExp
vous permettant de nombres/chiffres, ce qui est contraire à votre déclaration que vous voulez seulement des lettres. Si vous voulez vraiment que des lettres, changer votrealphaExp
comme suit:Aussi juste une suggestion, cependant noter que de nombreux noms de famille (et de certains prénoms) utiliser des traits d'union (-) et les guillemets simples ('). Vous souhaitez peut-être permettre à ces personnages.
Comme pour votre question au sujet de l'application que 2 noms de "Première Lastname' être entré, vous pouvez utiliser quelque chose comme ceci:
Votre code révisé serait maintenant:
Vous devez tester si la chaîne correspond à l'expression rationnelle, non seulement si elle est égale. Au lieu de
vous devez utiliser
(Ou
!name.match(alphaExp)
pour le négatif).Si vous voulez forcer les gens à entrer deux noms, vous pouvez utiliser quelque chose comme
(J'ai enlevé le 0-9 parce que vous ne voulez probablement pas les nombres.)
Pour tester une expression régulière, vous utilisez l'expression des méthodes
test
,exec
, oumatch
. Pour votre situationtest
serait le plus approprié et performant:Pour correspondre à AU MOINS deux noms, vous devez utiliser cette RegExp:
Avis de la
\-
parce que certaines personnes ont un nom et de l'espace dans le troisième support de jeu pour permettre à plus de deux noms, mais empêcher les gens d'entrer un nom, suivis par des espaces.Pour accepter uniquement les lettres qui sont de petite ou de la fortune, peu importe, nous pouvons utiliser