簡體   English   中英

正則表達式僅允許字母數字字符的屬性

[英]Regular expression Attribute that only allows alpha numeric characters

使用下面的表達式當我輸入“ 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-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();
        }
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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