我有一个正则表达式:
return Regex.IsMatch(_customer.FirstName, @"^[A-Za-z][A-Za-z0-9@#%&\'\-\s\.\,*]*$");
Run Code Online (Sandbox Code Playgroud)
现在,一些客户对他们的姓氏或名字中的元音进行了fada,如下所示: Brendán
注意:在一个你可以通过按住得到发达alt,ctrl然后按a.
我已经尝试将这些字符添加到正则表达式中,但是当程序尝试编译时出现错误.
我可以允许用户输入具有fada的这种字符的唯一方法是完全删除正则表达式,这意味着用户可以输入他们想要的任何内容.
有没有办法使用上面的表达式,并以某种方式允许以下字符?
á
é
í
ó
ú
Run Code Online (Sandbox Code Playgroud)
hwn*_*wnd 14
仅供参考,您不需要',.在角色类中转义上述内容[],并且可以-通过将其放置在角色类的开头或结尾来避免逃脱破折号.
您可以使用\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.
Run Code Online (Sandbox Code Playgroud)
或者只是将所需的字符添加到[]要包含的角色类中.
@"^[a-zA-Z0-9áéíóú@#%&',.\s-]+$"
Run Code Online (Sandbox Code Playgroud)
要扩展正则表达式以包含带有锐音符 ( fada ) 的元音,您可以使用 Unicode 代码点。您需要了解这些 unicode 块:
\n\n更多 Unicode 代码图表位于http://www.unicode.org/charts/index.html#scripts,涵盖 Latin Extended-B、-C 和 -D 以及 Latin Extended-Addional(应该涵盖几乎所有欧洲语言)其全部)。
\n\n所以,我们看到爱尔兰的fada元音是
\n\n\xc3\x81是\\u00C1; \xc3\xa1是\\u00E1\xc3\x89是\\u00C9; \xc3\xa9是\\u00E9\xc3\x8d是\\u00CD; \xc3\xad是\\u00ED\xc3\x93是\\u00D3; \xc3\xb3是\\u00F3\xc3\x9a是\\u00DA; \xc3\xba是\\u00FA因此你的正则表达式需要扩展:
\n\nRegex rx = new Regex( @"^[A-Za-z\\u00C1\\u00C9\\u00CD\\u00D3\\u00DA\\u00E1\\u00E9\\u00ED\\u00F3\\u00FA][A-Za-z\\u00C1\\u00C9\\u00CD\\u00D3\\u00DA\\u00E1\\u00E9\\u00ED\\u00F3\\u00FA0-9@#%&\\\'\\-\\s\\.\\,*]*$");\nRun Code Online (Sandbox Code Playgroud)\n