希腊字符、正则表达式和C#

希腊字符、正则表达式和C#,c#,regex,unicode,utf-8,internationalization,C#,Regex,Unicode,Utf 8,Internationalization,我正在为一本科学杂志建立一个CMS,它使用了很多希腊字符。我需要验证包含特定字符集和希腊字符的字段。以下是我现在拥有的: [^a-zA-Z0-9-()/\s] 除了字母数字“(”,“)”,“-”,和“"之外,我如何让它包含希腊字符 顺便说一句,我使用的是C#。用于Java,来自模式javadoc: \p{InGreek}希腊语中的一个字符 块(简单块) 如果您使用的语言将PCRE用于正则表达式和UTF-8,/[\x{0374}-\x{03FF}+/u应与希腊字符匹配。希腊字符介于U+0374和

我正在为一本科学杂志建立一个CMS,它使用了很多希腊字符。我需要验证包含特定字符集和希腊字符的字段。以下是我现在拥有的:

[^a-zA-Z0-9-()/\s]
除了字母数字“(”,“)”,“-”,和“"之外,我如何让它包含希腊字符


顺便说一句,我使用的是C#。

用于Java,来自模式javadoc:

\p{InGreek}希腊语中的一个字符 块(简单块)


如果您使用的语言将PCRE用于正则表达式和UTF-8,
/[\x{0374}-\x{03FF}+/u
应与希腊字符匹配。希腊字符介于U+0374和U+03FF()之间,并且
U
修饰符告诉PCRE使用unicode。如下文所述,
/\p{希腊语}+/u
也适用于PCRE

如果您使用的是Javascript,它将使用
\uxxx
而不是
\x{XXXX}
/[\u0374-\u03FF]+/


有关更多信息,请参阅本指南。

在.NET语言中,您可以使用
\p{IsGreekandCoptic}
匹配希腊字符。因此得到的正则表达式是

[^a-zA-Z0-9-()/\s\p{IsGreekandCoptic}]
\p{isgreenkoptic}
匹配:


作为我对SO的第一个回应,我不能在javascript正则表达式上否决Daniel的答案

我知道现在已经很晚了,但丹尼尔的回答是错误的。它排除了下面的古文字!如果你正在开发一款研究古希腊语词汇的圣经应用程序,这一点很重要

这是在js中查找希腊语和科普特语的正确正则表达式:

/[\u0370-\u03FF]+/gm 

摘自图表:

0370Ͱ希腊文大写字母HETA → 2C75Ⱶ拉丁文大写字母半h

0371ͱ希腊文小写字母HETA → 2C76ⱶ拉丁文小写字母半h

0372Ͳ希腊文大写字母ARCHAIC SAMPI

0373ͳ希腊文小写字母仿古SAMPI

编辑:Craig指出Daniel的正则表达式对于OP是正确的。虽然我找不到OP在哪里指定了他正在评估的希腊文本,但我承认我的回答只对古代文本有效


在我编辑这篇文章的时候,我想指出的是,这里没有任何正则表达式能将希腊字符与珀尔修斯添加到文本中的重音相匹配。因此,如果您碰巧在应用程序中安装或使用其任何公共域资源,请小心my regex。

哪种编程语言?为什么语言很重要?正则表达式有自己的标准,不是吗?编程语言和字符串格式(语言环境)都很重要。不同的语言支持不同的正则表达式语法和字符类。@Romain Muller:有许多不同的正则表达式实现(请参阅)。它们都有相同的基础,但也支持不同的功能。在这种情况下,了解这些功能会有所帮助。如果您有PCRE,只需使用
\p{Greek}
。您使用了哪种工具来制作“此块中的字符”图像?您好,此模式不适用于我,我缺少什么^[A-Za-z0-9\p{IsGreekandCoptic}\-\.]+$@Efthimis:您使用的是哪种语言?“不起作用”到底是什么意思?@Tim Pietzcker我使用asp.net mvc框架,无论我在输入中写希腊字母的地方,我都会收到验证错误消息,你到底是如何使用正则表达式的?您是否正确地转义了它或使用了逐字字符串?感谢您的贡献,欢迎使用。这个问题是在现代希腊字母表的背景下提出的,而不是在古希腊字母表的背景下提出的。