[英]Check a webform on clientside with RegularExpression if it contains two or more words
我正在嘗試讓RegularExpression在客戶端的Web表單(在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; }
我知道上面的代碼只會接受AZ,這對我來說是個問題。 我嘗試這樣做,但它仍然沒有傳遞“ÖrjanSörensson”之類的名稱:
RegularExpression(@"((^[\w]*\s[\w]*).*)+$", ErrorMessage = "Du måste skriva både för- och efternamn"),
我正在尋找的結果是這樣的:
似乎初始范圍[A-Za-z]
不夠寬 (因為您的字母帶有變音符號,例如Å
, Ä
); 嘗試與任何字母匹配的\\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
所以屬性可以是
[RegularExpression(@"^\p{L}+(\s+\p{L}+)+$",
ErrorMessage = "Du måste skriva både för- och efternamn")]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.