Skip to main content
 首页 » 编程设计

c#之允许字符输入的正则表达式检查

2024年01月13日36insus

我使用 Remote 对农场模型进行数据验证并检查省代码我不断收到不接受两个字符的错误。我需要省代码为 2 个字母长并检查它们是否真的字母。这是 RemoteController 的代码:

public JsonResult provinceCodeCheck(string provinceCode) 
{ 
    Regex justLetters = new Regex("^[A-Z]$"); 
    provinceCode.ToUpper(); 
    var provinceCodes = db.provinces.Find(provinceCode); 
 
    if (provinceCode.Length != 2) 
    { 
        return Json("The Province must be 2 letters long", 
           JsonRequestBehavior.AllowGet); 
    } 
    else if (!justLetters.Equals(provinceCode)) 
    { 
        return Json("The Province is not letters", 
           JsonRequestBehavior.AllowGet); 
    } 
    else if (provinceCodes == null) 
    { 
        return Json("The Province is not supported, sorry for the         inconvenience", 
           JsonRequestBehavior.AllowGet); 
    } 
    else 
    { 
        return Json(true, JsonRequestBehavior.AllowGet); 
    }           
} 

请您参考如下方法:

您的代码有几个问题:

  1. provinceCode.ToUpper() 不会改变 provinceCode 的值。您需要为其分配 provinceCode = provinceCode.ToUpper()

  2. !justLetters.Equals(provinceCode) 正在检查 Regex 是否等于字符串 provinceCode。您需要使用 Regex.IsMatch() :

    if (!justLetters.IsMatch(provinceCode)) 
    
  3. 最后(感谢这里的 Carnivorus)您的 Regex 只查找一个大写字母。如果您更改正则表达式,则可以将前两个 if 语句合并为一个:

    var justLetters = new Regex("^[A-Z]{2}$"); 
    

正如对您的代码的一般小改进一样,您不需要在此处使用 elseif,因为无论如何您都在 if 语句中返回。