I need a regular expression that accepts only Greek chars and spaces for a name field in my form (PHP). I've tried several findings on the net but no luck. Any help will be appreciated.
-
2Whenever somebody's trying to limit the input range like that, I ask myself: Is it really a good idea? You may well have a valid use case, but often it's overkill - imagine a person with a non-Greek name living in Greece, or a foreigner trying to input a temporary address elsewhere in the world, etc. etc. – Pekka Jun 06 '11 at 16:51
-
Either way, you should add more information: What character set is the data in that you are comparing? UTF-8? – Pekka Jun 06 '11 at 16:52
-
2Which findings did you try? (Else you might get the exact same suggestions.) – mario Jun 06 '11 at 16:53
8 Answers
Full letters solution, with accented letters:
/^[A-Za-zΑ-Ωα-ωίϊΐόάέύϋΰήώ]+$/
-
I would suggest the following, in addition to your answer: `/^[A-Za-zΑ-Ωα-ωίϊΐόάέύϋΰήώ]+$/`. Notice that I have changed the second range from `A-z` to `a-z`. – nik_m Aug 13 '17 at 10:37
-
This doesn't catch the other Greek letter accents. See Extended Greek Unicode block. – Suragch Jan 26 '18 at 19:02
-
3
I'm not too current on the Greek alphabet, but if you wanted to do this with the Roman alphabet, you would do this:
/^[a-zA-Z\s]*$/
So to do this with Greek, you replace a
and z
with the first and last letters of the Greek alphabet. If I remember right, those are α
and ω
. So the code would be:
/^[α-ωΑ-Ω\s]*$/

- 30,035
- 12
- 80
- 104
-
-
@blackuprise - That would be a whole different question. It's nontrivial to deal with diacritics. – Justin Morgan - On strike Dec 01 '12 at 05:07
-
@JasonCoyne - That answer doesn't account for capital letters with diacritics, although the `i` flag could solve that. Still, writing them all out doesn't seem like the best approach to me anyway, for a couple of reasons. Either way, if you're the downvoter, see my earlier comment: @blackuprise's question is a different use case. This is the answer to @bikey77's question as written, and apparently it solved the problem. – Justin Morgan - On strike Jun 21 '17 at 23:56
The other answers here didn't work for me. Greek Unicode characters are included in the following two blocks
- Greek and Coptic U+0370 to U+03FF (normal Greek letters)
- Greek Extended U+1F00 to U+1FFF (Greek letters with diacritics)
The following regex matches whole Greek words:
[\u0370-\u03ff\u1f00-\u1fff]+
I will let the reader translate that to whichever programming language format they may be using.
See also

- 484,302
- 314
- 1,365
- 1,393
To elaborate on leo pal's answer, an even more complete regex, which would accept even capital accented Greek characters, would be the following:
/^[α-ωΑ-ΩίϊΐόάέύϋΰήώΊΪΌΆΈΎΫΉΏ\s]+$/
With this, you get:
α-ω
- lowercase lettersΑ-Ω
- uppercase lettersίϊΐόάέύϋΰήώ
- lowercase letters with all (modern) diacriticsΊΪΌΆΈΎΫΉΏ
- uppercase letters with all (modern) diacritics\s
- any whitespace character
Note: The above does not take into account ancient Greek diacritics (ᾶ, ἀ, etc.).

- 530
- 1
- 4
- 15
What worked for me was /^[a-zA-Z\p{Greek}]+$/u
source: http://php.net/manual/fr/function.preg-match.php#105324

- 305
- 1
- 2
- 16
Greek & Coptic in utf-8 seem to be in the U+0370 - U+03FF range. Be aware: a space, a -
, a .
etc. are not....

- 69,272
- 8
- 97
- 136
Just noticed at the excellent site https://regexr.com/ that the range of Greek characters are from "Ά" (902) to "ώ" (974) with 3 characters that are not aphabet characters: "·" (903) and unprintable characters 0907, 0909
So a range [Ά-ώ]
will cover 99.99% of the cases!
With (?![·\u0907\u0909])[Ά-ώ]
covers 100%. (I don't check this at PHP though)

- 343
- 4
- 10
The modern Greek alphabet in UTF-8 is in the U+0386 - U+03CE range.
So the regex you need to accept Greek only characters is:
$regex_gr = '/^[\x{0386}-\x{03CE}]+$/u';
or (with spaces)
$regex_gr_with_spaces = '/^[\x{0386}-\x{03CE}\s]+$/u';

- 43
- 6
-
1It looks like this is nearly a copy/paste of the earlier (6+ months earlier) answer... If there's some significant improvement to the earlier answer, it'd be best to outline/explain that. Thanks. – BigBlueHat Mar 13 '12 at 18:40