【问题标题】:Regular expression ad hoc [closed]正则表达式即席[关闭]
【发布时间】:2017-02-02 08:43:16
【问题描述】:

我正在开发一个 C# 应用程序。

我有一个带有提交按钮的文本输入字段。

当我点击按钮时,我想检查文本是否准确:“CODxxxxx”(x=number)。

其实我有这个:

if (inputText1.ToLower().Contains("COD") && inputText1.Length.ToString() == "8")
        {
            //DO THINGS
        }

但如果字符串是xxxCODxx,则语句返回true。

我认为正则表达式可以帮助我,但我从未使用过 C#...

【问题讨论】:

  • 是的,它可以 - 试试看会发生什么
  • 我想检查字符串的长度是否为 8 个字符。前 3 个字符必须是“COD”,后 5 个字符必须是数字。
  • 所以你正在检查一个字符串StartsWith COD 吗?.. 我也很惊讶自从ToLower 永远不会包含COD 以来一直有效

标签: c# regex visual-studio


【解决方案1】:

试试正则表达式

 bool correct = Regex.IsMatch(inputText1, "^COD[0-9]{5}$");

如果您想忽略大小写(即CodcOD 等应该是正确的),只需添加选项:

 bool correct = Regex.IsMatch(inputText1, "^COD[0-9]{5}$", RegexOptions.IgnoreCase);

【讨论】:

    【解决方案2】:

    不用RegEx也可以解决

    string input = "COD12345";
    bool result = input.StartsWith("COD") && input.Skip(3).All(x => char.IsDigit(x)) && input.Length == 8;
    

    【讨论】:

      【解决方案3】:

      试试:

      inputText1.ToLower().StartsWith("cod") && inputText1.Length == 8
      

      或者如果你真的想要正则表达式, 这将是正确的模式:

      Regex.IsMatch( inputText1, "COD\w{5}");
      

      【讨论】:

      • \w 应该是 \d 但这绝对不是正则表达式的任务
      • "CODxxxxx" (x=number) - 缺少号码验证
      • 哦,是的,你是对的......如果 x 应该是一个数字,它必须是一个 \d
      【解决方案4】:

      您可以使用正则表达式:

      Regex.IsMatch( text, "^COD\\d{5}$");
      

      或您自己的解决方案:

      string txt = inputText1.ToLower();
      if (txt.StartsWith("cod") && txt.Length == "8")
         {
                 int a = 0;
                 int.TryParse(txt.Substring(3), out a);
                  if(a!=0){
                  //DO THINGS
                }
         }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-04-08
        • 2017-11-13
        • 2015-04-27
        • 1970-01-01
        • 2016-09-28
        • 2015-10-22
        • 1970-01-01
        相关资源
        最近更新 更多