c# - 正则表达式中的 Unicode 字符

标签 c# .net regex

我有一个正则表达式:

return Regex.IsMatch(_customer.FirstName, @"^[A-Za-z][A-Za-z0-9@#%&\'\-\s\.\,*]*$");

现在,一些客户对姓氏或名字中的元音有 fada,如下所示:Brendán

注意 a 上的 fada,您可以通过按住 altctrl 然后按 a 获得。

我曾尝试将这些字符添加到正则表达式中,但在程序尝试编译时出现错误。

我可以让用户使用 fada 输入这样一个字符的唯一方法是完全删除正则表达式,这意味着用户可以输入他们想要的任何内容。

有没有办法使用上面的表达式并以某种方式允许以下字符?

á
é
í
ó
ú

最佳答案

仅供引用,您不需要在字符类 [] 中转义上述 ',.,并且您可以避免转义破折号 - 将其放在字符类的开头或结尾。

您可以使用 \p{L} 匹配来自任何语言的任何类型的字母。请参见下面的示例:

string[] names = { "Brendán", "Jóhn", "Jason" };
Regex rgx      = new Regex(@"^\p{L}+$");
foreach (string name in names)
    Console.WriteLine("{0} {1} a valid name.", name, rgx.IsMatch(name) ? "is" : "is not");

// Brendán is a valid name.
// Jóhn is a valid name.
// Jason is a valid name.

或者只是将所需的字符添加到您要包含的字符类 [] 中。

@"^[a-zA-Z0-9áéíóú@#%&',.\s-]+$"

关于c# - 正则表达式中的 Unicode 字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20641297/

相关文章:

regex - 在 Perl 中,如何从日志文件的行中提取电子邮件地址?

java - 查找并替换以新字符串开头和结尾的子字符串 java

python - 非贪婪的 python 正则表达式

c# - 如何删除 List<int[]> 中的所有第一项

c# - 如何从 DateTime 获取 AM/PM 值?

c# - 如何使用 rest api 在一个信号中为用户设置标签

c# - 我是否应该在 Visual Studio 中使用类库避免 'chained' 引用?

java - 什么是业务流程管理系统?

c# - 将 Json 对象数组转换为最合适的 .Net 集合

c# - 停止向外部发布到 Asp.Net WebForm 页面的能力