2016-03-16 210 views
0

使用下面的錯誤信息表達顯示了當我進入「ASDF」或「%#$%#$」正則表達式屬性,只允許字母數字字符

我只希望允許字母數字字符。我的下面的語法有什麼問題?

[Required(ErrorMessage = ("Only alpha numeric characters are allowed.")), Display(Name = "Program Codes"), RegularExpression(@"^[a-zA-Z0-9]")] 
    public string ProgramCode 
    { 
     get 
     { 
      return _programCode; 
     } 
     set 
     { 
      if (OnPropertyChanging("ProgramCode", _programCode, value)) 
      { 
       var oldValue = _programCode; 
       _programCode = value; 
       OnPropertyChanged("ProgramCode", oldValue, value); 
       OnProgramCodeChanged(); 
      } 
     } 
    } 
+0

您需要的第一個字符是字母或'一個數字@ 「^ [A-ZA-Z0-9]」'。這似乎並不是你需要的。嘗試'@ 「^(?= \ d * \ d)(?= [^ A-ZA-Z] * [A-ZA-Z])[A-ZA-Z0-9] * $」'。它會[像這樣](https://regex101.com/r/yA6eJ3/1)。 –

+0

我不想要求第一個字符是任何東西。只有整個字符串只有字母或數字。什麼順序。我會給它一個鏡頭。謝謝 – CsharpBeginner

+0

*只有整個字符串只有字母或數字*聽起來好像你想允許'12345'或'asdf'就像字符串一樣。但是,你在問題中寫了一些不同的東西。我認爲你需要一個正則表達式來允許一個包含至少一個數字和至少一個字母的字符串,並且只能由字母和數字組成。對? –

回答

1

您的正則表達式幾乎是正確的。它將匹配第一個字符匹配的任何字符串[0-9A-Za-z]。有兩件事缺失;見實施例和以下的說明中:

腳本:

using System; 
using System.Text.RegularExpressions; 

var regex = new Regex(@"^[a-zA-Z0-9]*$"); 
Console.WriteLine(regex.IsMatch("asdf"));  // True 
Console.WriteLine(regex.IsMatch(""));   // True 
Console.WriteLine(regex.IsMatch("123abcABC")); // True 
Console.WriteLine(regex.IsMatch("&%&"));  // False 

說明:

  • ^表示開始
  • $表示端
  • *匹配零個或多個字符

在我上面做的方式添加*$確保任何和所有的比賽將包括完全零個或多個字符匹配[0-9A-Za-z]

所以,你的例子是這樣的:

[Required(ErrorMessage = ("Only alpha numeric characters are allowed.")), Display(Name = "Program Codes"), RegularExpression(@"^[a-zA-Z0-9]*$")] 
public string ProgramCode 
{ 
    get 
    { 
     return _programCode; 
    } 
    set 
    { 
     if (OnPropertyChanging("ProgramCode", _programCode, value)) 
     { 
      var oldValue = _programCode; 
      _programCode = value; 
      OnPropertyChanged("ProgramCode", oldValue, value); 
      OnProgramCodeChanged(); 
     } 
    } 
} 
+0

我得到一個錯誤,當我把 「變種正則表達式=新的正則表達式(@」^[A-ZA-Z0-9] * $ 「);」上面的「公共字符串ProgramCode」此外使用語句顯示爲灰色,不像我的其他使用語句。 – CsharpBeginner

+0

我編輯了我的答案,包括你的代碼現在看起來像什麼 - 你只需要添加'*'和'$'。 – Jeremy

相關問題