PHP和正则表达式只接受表单中的希腊字符

时间:2011-06-06 16:49:12

标签: php regex

我需要一个正则表达式,只接受希腊字符和空格,用于表单中的名称字段(PHP)。 我在网上尝试了几个发现,但没有运气。任何帮助将不胜感激。

8 个答案:

答案 0 :(得分:20)

全字母解决方案,带有重音字母:

/^[A-Za-zΑ-Ωα-ωίϊΐόάέύϋΰήώ]+$/

答案 1 :(得分:5)

我对希腊字母表不太了解,但如果你想用罗马字母表做这个,你会这样做:

/^[a-zA-Z\s]*$/

为了使用希腊语,您可以使用希腊字母表的第一个和最后一个字母替换az。如果我能正确记住我的圣经经文,那就是αω。所以代码是:

/^[α-ωΑ-Ω\s]*$/

答案 2 :(得分:5)

这里的其他答案对我没用。希腊Unicode字符包含在以下两个块中

  • 希腊语和科普特语U + 0370到U + 03FF(普通希腊字母)
  • 希腊语扩展U + 1F00到U + 1FFF(带变音符号的希腊字母)

以下正则表达式匹配整个希腊语单词:

[\u0370-\u03ff\u1f00-\u1fff]+

我会让读者将其翻译成他们可能使用的任何编程语言格式。

答案 3 :(得分:0)

希腊语&在utf-8中的科普特似乎在U + 0370 - U + 03FF范围内。请注意:空格,-.等不是....

答案 4 :(得分:0)

对我有用的是/^[a-zA-Z\p{Greek}]+$/u 来源:http://php.net/manual/fr/function.preg-match.php#105324

答案 5 :(得分:0)

要详细说明leo pal的答案,将使用以下更完整的正则表达式,甚至可以接受大写字母的希腊字符:

/^[α-ωΑ-ΩίϊΐόάέύϋΰήώΊΪΌΆΈΎΫΉΏ\s]+$/

有了这个,你得到:

  • α-ω-小写字母
  • Α-Ω-大写字母
  • ίϊΐόάέύϋΰήώ-带有所有(现代)变音符号的小写字母
  • ΊΪΌΆΈΎΫΉΏ-带有所有(现代)变音符号的大写字母
  • \s-任何空格字符

注意:以上内容未考虑古希腊变音符号(ᾶ,ἀ等)。

答案 6 :(得分:0)

刚刚在优秀站点 https://regexr.com/ 上注意到希腊字符的范围是从“Ά”(902)到“ώ”(974),其中 3 个字符不是 aphabet 字符:“·”(903)和不可打印的字符 0907, 0909 因此范围 const { forEach } = require("lodash"); async function test(num) { await (async() => setTimeout(() => { if (num == 11) { throw 'err'; } }, 1000))(); return num; } test(11).then(() => console.log("Resolved") ).catch(() => console.log("Rejected") ); 将涵盖 99.99% 的情况!

使用 [Ά-ώ] 覆盖 100%。 (不过我不会在 PHP 上检查这个)

答案 7 :(得分:-1)

UTF-8中的现代希腊字母表位于U+0386 - U+03CE range

因此,你需要接受希腊语字符的正则表达式是:

$regex_gr = '/^[\x{0386}-\x{03CE}]+$/u';

或(带空格)

$regex_gr_with_spaces = '/^[\x{0386}-\x{03CE}\s]+$/u';