正则表达式仅允许字母数字字符的属性

时间:2016-03-16 19:26:05

标签: c# regex attributes

使用下面的表达式当我输入" 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();
            }
        }
    }

1 个答案:

答案 0 :(得分: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

说明:

  • ^表示开头
  • $表示结束
  • *匹配零个或多个字符

以我上面的方式添加*$可确保任何和所有匹配都包含完全零个或多个匹配{{1}的字符}。

所以你的例子看起来像这样:

[0-9A-Za-z]