我正在尝试让RegularExpression在我的webform(在MVC中工作)在客户端工作,以便验证用户输入两个或更多单词。因为它的名字和姓氏我希望它接受像“åäö”这样的字母(不一定只是åäö,所有的字母都很好)。
我做了这段代码:
[Required(ErrorMessage = "Du måste fylla i ditt namn"),
RegularExpression(@"^[A-Za-z]*(\s[A-Za-z]*)+$", ErrorMessage = "Du måste skriva både för- och efternamn"),
Display(Name = "Namn")]
public string Name { get; set; }
我知道上面的代码只接受A-Z,这对我来说是个问题。我尝试了这样但它仍然没有传递像“ÖrjanSörensson”这样的名字:
RegularExpression(@"((^[\w]*\s[\w]*).*)+$", ErrorMessage = "Du måste skriva både för- och efternamn"),
我正在寻找的结果是:
答案 0 :(得分:0)
初始范围[A-Za-z]
似乎不够宽(因为您的字母带有变音符号,如Å
,{{1} });尝试匹配任何字母的Ä
:
\p{L}
结果
string[] tests = new string[] {
"Olle Svensson",
"Åsa Äng",
"Sören Höre",
"Olle ", // should fail: one word only followed by space
"Åsa", // should fail: one word only
"Örjan Sörensson"
};
string pattern = @"^\p{L}+(\s+\p{L}+)+$";
var results = tests
.Select(test => $"{test,-20} {(Regex.IsMatch(test, pattern) ? "Pass" : "Fail")}");
Console.Write(string.Join(Environment.NewLine, results));
所以属性可以是
Olle Svensson Pass
Åsa Äng Pass
Sören Höre Pass
Olle Fail
Åsa Fail
Örjan Sörensson Pass