我有一个正则表达式:
return Regex.IsMatch(_customer.FirstName, @"^[A-Za-z][A-Za-z0-9@#%&\'\-\s\.\,*]*$");
现在,一些客户对姓氏或名字中的元音有 fada,如下所示:Brendán
注意 a 上的 fada,您可以通过按住 alt、ctrl 然后按 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/