Regex在Regex Builder中工作,但在C#中不起作用



我已经看到了几个线程,并且尝试了其中提出的解决方案,但我似乎无法解决此问题。我有一个正则表达式,以mm/dd/yyyy , mm/dd/yyyy格式检查两个日期。两者之间可以有许多空间。我的表达式在http://regexr.com/上有效,但是当我在vs中运行代码时,the Regex检查总是错误的。任何帮助将不胜感激!

        var reg = new Regex(@"d{1,2}/d{1,2}/d{1,4}[ ]{0,},[ ]{0,}d{1,2}/d{1,2}/d{1,4}");
        Console.WriteLine("Please enter two dates in dd/mm/yyyy format seperated by a comma");
        string datesIn = Console.ReadLine();
        while (reg.IsMatch(datesIn) != true);
        {
            Console.WriteLine("Sorry, please make sure to enter your dates in dd/mm/yyyy format seperated by a comma.");
            datesIn.Replace(datesIn, Console.ReadLine());
        }
        String[] dates = datesIn.Split(',');
        foreach (var date in dates)
            Console.WriteLine(date.Trim());
        Console.ReadLine();

我强烈建议您使用 TryParse

让.net为您做该工作
using System;
using System.Globalization;
public class Program
{
    public static void Main()
    {
        var input = "12/10/2012, 12/15/2015";
        String[] dates = input.Split(',');
        if(dates.Length != 2){
            Console.WriteLine("I said 2 dates");
        } else {
            foreach (var date in dates)
            {
                DateTime parsedDate;
                if(DateTime.TryParse(date, new CultureInfo("es"), DateTimeStyles.None, out parsedDate))
                {
                    Console.WriteLine("{0} Perfect!", parsedDate);
                }
                else 
                {
                    Console.WriteLine("{0} Not right sir!", date);
                }
            }
        }
        Console.ReadLine();
    }
}

源代码:https://dotnetfiddle.net/vgequm

最新更新