2016-03-16 212 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

相关问题