2009-04-24 9 views

Répondre

4

Essayez cette

"^.*[a-zA-Z].*$" 

Cela fonctionne avec la plupart des moteurs regex. Cependant, il est limité aux caractères alphabétiques ASCII. Pour les caractères internationaux, nous aurions besoin de connaître le moteur regex impliqué.

+0

Je suis désolé, c'est une réponse 100% correcte. Aller à avoir besoin d'une explication pour le vote vers le bas. – JaredPar

+2

Je ne peux pas vraiment * l'expliquer *, car ce n'était pas le mien, mais vous avez une regex assez inefficace là-bas, comparativement. La plupart des moteurs regex fournissent une méthode pour trouver une correspondance n'importe où dans la chaîne, auquel cas la réponse de thinkcube est un meilleur choix. Les méthodes qui sont ancrées au début de la chaîne n'ont toujours pas besoin d'un explicite et l'ancre de fin ne devrait jamais être nécessaire, vous laissant avec '. * [A-zA-Z]'. –

+0

@Ben - oui c'était ça, et en supposant que l'alphabet est a-z. – Alnitak

3

Ici, il est:

[a-zA-Z] 
1

Le match standard POSIX pour les caractères alphabétiques est:

[[:alpha:]] 

Le .net équivalent est

[\p{L}] 

où cela est un raccourci MS pour UNICODE 5 classes de caractères "lettre" différentes, également supportées par Java:

[\p{Lu}\p{Ll}\p{Lt}\p{Lm}\p{Lo}] 

Notez que cela devrait également correspondre tous caractères alphabétiques, pas seulement l'habituel jeu « [a-zA-Z] » de l'alphabet romain, et donc correspond aussi des caractères accentués, etc.

+0

[[: alpha:]] n'est pas largement pris en charge. Python, JavaScript et .NET (juste au-dessus de ma tête) ne le supportent pas. Je crois que seuls PCRE et POSIX le font. –

0

[a-zA-Z] ou même [a-z] si vous passez l'option insensible à la casse à votre moteur d'expressions régulières.

+0

Je ne sais pas pourquoi cela a été déprimé, +1 – gnomed

3

N'oubliez pas que la définition de 'caractère alphabétique' n'est pas la même partout dans le monde. Par exemple, en Norvège, l'expression rationnelle correcte est [a-zA-ZæøåÆØÅ].

Questions connexes