Regex 注册日期:YYYYMM--

Regex 注册日期:YYYYMM--,regex,date,Regex,Date,没有日期值(“--”)和分隔符的日期的正则表达式是什么 格式:YYYYMM-- 201201--将代码匹配为年。月 namespace ConsoleApplication1 { class Program { static void Main(string[] args) { string txt="201201--"; string re1="((?:[0]?[1-9]|[1][012])(?:(?:[0-2]?\\d{1})|(?:[3][

没有日期值(“--”)和分隔符的日期的正则表达式是什么

格式:YYYYMM--


201201--

将代码匹配为年。月

namespace ConsoleApplication1
{
  class Program
  {
    static void Main(string[] args)
    {
      string txt="201201--";

      string re1="((?:[0]?[1-9]|[1][012])(?:(?:[0-2]?\\d{1})|(?:[3][01]{1}))(?:(?:[1]{1}\\d{1}\\d{1}\\d{1})|(?:[2]{1}\\d{3})))(?![\\d])";
      string re2="(-)";
      string re3="(-)";

      Regex r = new Regex(re1+re2+re3,RegexOptions.IgnoreCase|RegexOptions.Singleline);
      Match m = r.Match(txt);
      if (m.Success)
      {
            String mmddyyyy1=m.Groups[1].ToString();
            String c1=m.Groups[2].ToString();
            String c2=m.Groups[3].ToString();
            Console.Write("("+mmddyyyy1.ToString()+")"+"("+c1.ToString()+")"+"("+c2.ToString()+")"+"\n");
      }
      Console.ReadLine();
    }
  }
}
…处理100001--299912--


根据@m42编辑更正的日期,哎呀

谢谢,昨天是美国的一个假期,所以我在星期一早上晚了一天打字:——]我去掉了一些不必要的反斜杠;您可能还想在正则表达式之前添加一个
\b
,以确保匹配从“单词边界”开始(而不是作为
9876543210012--
或类似的子匹配)。啊,我倾向于过度逃避这些事情,因为我很少发现一种语言抱怨过多的反斜杠,但是经常遇到的麻烦太少了:-)不过还是要谢谢你。而且,是的,这根本不能处理锚定。你需要接受年吗
  ([12][0-9]{3})(0[1-9]|1[0-2])--