c# - 正则表达式允许非 ascii 和外文字母?

标签 c# .net regex

是否可以创建一个正则表达式来允许非 ascii 字母和拉丁字母,例如中文或希腊符号(例如允许 A 汉语 AbN 汉语)?

我目前有以下 ^[\w\d][\w\d_\-\.\s]*$ 只允许拉丁字母。

最佳答案

在 .NET 中,

^[\p{L}\d_][\p{L}\d_.\s-]*$

等同于您的正则表达式,另外还允许其他 Unicode 字母。

解释:

\p{L} 是 Unicode 属性“Letter”的简写。

警告:我认为您不想让下划线作为初始字符(证明它只出现在第二个字符类中)。由于 \w 包含下划线,因此您的正则表达式确实允许它。您可能希望将它从我的解决方案中的第一个字符类中删除(当然,它包含在 \p{L} 中)。

在 ECMAScript 中,事情并不那么容易。您必须定义自己的 Unicode 字符范围。幸运的是,一位 StackOverflow 用户已经适应了这种情况并设计了一个 JavaScript 正则表达式转换器:

https://stackoverflow.com/a/8933546/20670

关于c# - 正则表达式允许非 ascii 和外文字母?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13069240/

相关文章:

javascript - 如何用匹配长度的 $ 字符串替换正则表达式匹配

c# - StackExchange.Redis.RedisTimeoutException - 由于问题人们如何解决它?

c# - 将可为 null 的 DateTime 绑定(bind)到 MaskedTextBox

c# - 使用 XmlSerializer 序列化整数数组

java - 正则表达式是否忽略新行并只匹配整个大字符串?

特殊字符的Java正则表达式

c# - 帮助理解标签云算法

c# - 创建动态 linq 查询

.net - .NET 的 AMQP V1.0 客户端

c# - 为什么 .Net 中的泛型类对它们的泛型参数是不变的?