我需要一个正则表达式,只接受希腊字符和空格,用于表单中的名称字段(PHP)。 我在网上尝试了几个发现,但没有运气。任何帮助将不胜感激。
答案 0 :(得分:20)
全字母解决方案,带有重音字母:
/^[A-Za-zΑ-Ωα-ωίϊΐόάέύϋΰήώ]+$/
答案 1 :(得分:5)
我对希腊字母表不太了解,但如果你想用罗马字母表做这个,你会这样做:
/^[a-zA-Z\s]*$/
为了使用希腊语,您可以使用希腊字母表的第一个和最后一个字母替换a
和z
。如果我能正确记住我的圣经经文,那就是α
和ω
。所以代码是:
/^[α-ωΑ-Ω\s]*$/
答案 2 :(得分:5)
这里的其他答案对我没用。希腊Unicode字符包含在以下两个块中
以下正则表达式匹配整个希腊语单词:
[\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';