How can I get a regex to check that a string only contains alpha characters [a-z] or [A-Z]?

Matt picture Matt · Jun 13, 2009 · Viewed 38.2k times · Source

I'm trying to create a regex to verify that a given string only has alpha characters a-z or A-Z. The string can be up to 25 letters long. (I'm not sure if regex can check length of strings)

Examples:
1. "abcdef" = true;
2. "a2bdef" = false;
3. "333" = false;
4. "j" = true;
5. "aaaaaaaaaaaaaaaaaaaaaaaaaa" = false; //26 letters

Here is what I have so far... can't figure out what's wrong with it though

Regex alphaPattern = new Regex("[^a-z]|[^A-Z]");

I would think that would mean that the string could contain only upper or lower case letters from a-z, but when I match it to a string with all letters it returns false...

Also, any suggestions regarding efficiency of using regex vs. other verifying methods would be greatly appreciated.

Answer

Blixt picture Blixt · Jun 13, 2009
Regex lettersOnly = new Regex("^[a-zA-Z]{1,25}$");
  • ^ means "begin matching at start of string"
  • [a-zA-Z] means "match lower case and upper case letters a-z"
  • {1,25} means "match the previous item (the character class, see above) 1 to 25 times"
  • $ means "only match if cursor is at end of string"