簡體   English   中英

如果包含兩個或多個單詞,請使用RegularExpression在客戶端檢查一個Web表單

[英]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"),

我正在尋找的結果是這樣的:

  • “ Olle Svensson” =>通過
  • “ÅsaÄng” =>通過
  • “SörenHöre” =>通過
  • “ Olle” =>失敗
  • “Åsa” =>失敗

似乎初始范圍[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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM