Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Regular Expression to match only alphabetic characters

Tags:

regex

I was wondering If I could get a regular expression which will match a string that only has alphabetic characters, and that alone.

like image 319
Steffan Harris Avatar asked May 20 '11 04:05

Steffan Harris


2 Answers

You may use any of these 2 variants:

/^[A-Z]+$/i /^[A-Za-z]+$/ 

to match an input string of ASCII alphabets.

  • [A-Za-z] will match all the alphabets (both lowercase and uppercase).
  • ^ and $ will make sure that nothing but these alphabets will be matched.

Code:

preg_match('/^[A-Z]+$/i', "abcAbc^Xyz", $m); var_dump($m); 

Output:

array(0) { } 

Test case is for OP's comment that he wants to match only if there are 1 or more alphabets present in the input. As you can see in the test case that matches failed because there was ^ in the input string abcAbc^Xyz.

Note: Please note that the above answer only matches ASCII alphabets and doesn't match Unicode characters. If you want to match Unicode letters then use:

/^\p{L}+$/u 

Here, \p{L} matches any kind of letter from any language

like image 165
anubhava Avatar answered Sep 19 '22 23:09

anubhava


If you need to include non-ASCII alphabetic characters, and if your regex flavor supports Unicode, then

\A\pL+\z 

would be the correct regex.

Some regex engines don't support this Unicode syntax but allow the \w alphanumeric shorthand to also match non-ASCII characters. In that case, you can get all alphabetics by subtracting digits and underscores from \w like this:

\A[^\W\d_]+\z 

\A matches at the start of the string, \z at the end of the string (^ and $ also match at the start/end of lines in some languages like Ruby, or if certain regex options are set).

like image 45
Tim Pietzcker Avatar answered Sep 21 '22 23:09

Tim Pietzcker