我正在为一本科学期刊建立一个CMS,它使用了很多希腊字符。我需要验证字段以包含特定字符集和希腊字符。这就是我现在所拥有的:
[^a-zA-Z0-9-()/\s]
除了字母数字,'(',')',' - '和'_'之外,我如何才能包含希腊字符?
顺便说一句,我正在使用C#。
答案 0 :(得分:5)
在.NET语言中,您可以使用\p{IsGreekandCoptic}
来匹配希腊字符。因此得到的正则表达式是
[^a-zA-Z0-9-()/\s\p{IsGreekandCoptic}]
\p{IsGreekandCoptic}
匹配:
答案 1 :(得分:3)
如果您使用的语言使用PCRE作为正则表达式和UTF-8,/[\x{0374}-\x{03FF}]+/u
应匹配希腊字符。希腊字符介于U + 0374和U + 03FF(source)之间,u
修饰符告诉PCRE使用unicode。如下所述,/\p{Greek}+/u
与PCRE一样适用。
如果您使用的是Javascript,则会使用\uXXXX
代替\x{XXXX}
:/[\u0374-\u03FF]+/
。
有关详情,请参阅Unicode Regular Expressions的本指南。
答案 2 :(得分:1)
对于Java,来自Pattern javadoc:
\ p {InGreek}希腊文中的一个角色 块(简单块)
答案 3 :(得分:1)
作为我在SO上的第一个回复,我无法在javascript正则表达式上回答Daniel的回答。
我知道这已经很晚了,但丹尼尔的答案是错误的。它排除了下面的古代人物!如果您正在研究一种研究古希腊语单词的圣经应用程序,这一点非常重要!
这是找到希腊语& amp;的正确正则表达式cos in js:
/[\u0370-\u03FF]+/gm
http://unicode.org/charts/PDF/U0370.pdf
摘自图表:
编辑:克雷格指出丹尼尔的正则表达式对于OP是正确的。虽然我无法找到OP在哪里指定他正在评估哪些希腊文,但我承认我的回答仅对古代文本有效。0370Ͱ希腊大写字母HETA →2C75Ⱶ拉丁语大写字母半小时
0371ͱ希腊小写字母HETA →2C76ⱶ拉丁小写字母半小时
0372Ͳ希腊大写字母ARCHAIC SAMPI
0373ͳ希腊小写字母ARCHAIC SAMPI
虽然我正在编辑这篇文章,但我还要指出,这里没有正则表达式与希腊字符匹配,而Perseus在其文本中添加了这种重点。因此,如果您碰巧安装了http://www.perseus.tufts.edu/hopper/,或在应用中使用了他们的任何公共域资源,请小心我的正则表达式。