2012-02-09 2 views
0

Je dois valider une entrée, et la façon la plus simple dont je dispose actuellement est d'utiliser une seule expression rationnelle. Je veux vérifier tous les caractères qui pourraient être dans un nom, donc des caractères spéciaux comme ü devraient être autorisés, comme dans Schüssler. Mais les chiffres ne devraient pas être autorisés, sinon j'aurais juste utilisé \ w. J'ai donc essayé de faire correspondre tous les caractères des mots à l'exclusion des chiffres et de _, mais je n'arrive pas à faire fonctionner ceci. Alors quelqu'un peut-il me montrer comment faire ce travail (si c'est possible), ou me donner une autre solution qui n'implique pas de mentionner tous les caractères spéciaux possibles qui sont autorisés?Caractères de mot sans caractères décimaux

+0

Quels caractères spéciaux sont autorisés? Vous avec une gamme inverse (en spécifiant des caractères qui ne sont pas autorisés), mais c'est probablement une tâche encore plus difficile, car il permettra à tous les types de symboles et autres indésirables qui ne peuvent pas être des parties de noms. –

+0

Si vous utilisez une regex, il est probablement plus simple de spécifier la liste des caractères valides. –

+0

http://www.regular-expressions.info/screens/rxbcharclass.png La variante de l'Europe de l'Ouest sans les décimales et _ fondamentalement – Johan

Répondre

0

Cette regex détectera/tout permettre, mais la choses dans le [^].

/[^_0-9 ]+/g 
+0

Cela fonctionnerait, mais alors je devrais inclure tout ce que je ne veux pas, qui est plus court mais toujours une liste décente. – Johan

+0

@Johan Eh bien, vous ne pourrez pas contourner cela. Quelque part et - comment vous devez spécifier ce que vous voulez et ce que vous ne voulez pas, je pense. – poitroae

1

Cela permettra d'attraper la plupart des accents pour les langues romanes. Si vous avez besoin, ajoutez:

/^[a-záéíóäëiöúàèììù]+$/i 
+0

L'OP voulait également faire correspondre les trémas et les caractères accentués, qui n'ont pas une belle plage 'ä-ÿ'. – Blender

-1

Pourquoi ne pas faire le contraire et vérifier que pour les choses que vous ne voulez pas:

if (!name.match(/[0-9_]/g)) { 
    // Name has no underscores or digits. Keep validating 
} else { 
    // Ask the user why they have digits in their name 
} 
+0

Downvoter, montrez-vous. Une explication de la raison pour laquelle ma réponse est invalide serait bien. – Blender

Questions connexes