正则表达式模式表达式缺少变化

我要过滤以下字符串(不带引号):

  • 'VISTA'
  • '1+'
  • '1 +'

但不能像

  • 'Vaddx'
  • 'Aista'
  • '1 +'
  • '1'
  • '1++'
  • '+1'

以此类推

我使用以下模式进行比赛,但我认为缺少某些内容。

 [VvIiSsTtAa]|1\\s\\+|1\\+

和下面的代码进行测试。

    static void Main(string[] args)
    {
        string[] paymentType = new string[] {"VISTA","vista","Vista","vtid","1","1+","1  +","+","+1","1++"};

        foreach (var item in paymentType)
        {
            Console.Write($"Item {item} is ");

            if(!Regex.Match(item,"[VvIiSsTtAa]|1\\s\\+|1\\+").Success)
               Console.Write("not ");
            Console.WriteLine("valid.");
        }

        Console.WriteLine("\n\n\n");
    }

我所拥有的是:

- Item VISTA is valid
- Item vista is valid
- Item Vista is valid
- Item vtid is valid   <<---- WRONG
- Item 1 is not valid
- Item 1+ is valid
- Item 1  + is not valid
- Item + is not valid
- Item +1 is not válid
- Item 1++ is valid  <<---- WRONG

我的模式字符串中缺少什么?

谢谢。

zydx123 回答:正则表达式模式表达式缺少变化

这是简单的方法,其中 (?i) 表示不区分大小写:

(?i)^(vista|1[ ]?\+)$

假设边界是字符串锚点。

本文链接:https://www.f2er.com/3156120.html

大家都在问