正则表达式动态分隔符

 

本人只是写了一段代码,感觉性能比较好所以记录下来供自己查看用得:

public virtual ReturnResult<bool> CheckTimeRange(string range, string operHint, string name, string dateSeparator = ">", string dateRangeSeparator = ";") 
{
  if (string.IsNullOrEmpty(range))
    return new ReturnResult<bool>(false, operHint + "失败," + name + "日期范围不可为空");
  Regex reg = new Regex(@"(?<sdate>\d{4}[-/]\d{1,2}[-/]\d{1,2})" + dateSeparator + @"(?<edate>\d{4}[-/]\d{1,2}[-/]\d{1,2})");
  string[] sArrays = range.Split(new string[] { dateRangeSeparator }, StringSplitOptions.RemoveEmptyEntries);
  foreach(string sArray in sArrays)
  {
    DateTime firstValue, lastVaule;
    if(!reg.IsMatch(sArray))
      return new ReturnResult<bool>(false, operHint + "失败," + name + "日期格式有误");

    string[] dateTimeRanges = Regex.Split(sArray, dateSeparator);
    if (!DateTime.TryParse(dateTimeRanges.First(), out firstValue) || !DateTime.TryParse(dateTimeRanges.Last(), out lastVaule))
      return new ReturnResult<bool>(false, operHint + "失败," + name + "日期格式有误");
    DateTime date = DateTime.Now;
    if (firstValue < date.AddYears(-2) || lastVaule > date.AddYears(2) || firstValue > lastVaule)
      return new ReturnResult<bool>(false, operHint + "失败," + name + "日期范围输入有误");
  }
    return new ReturnResult<bool>(true, name + "时间范围正确");
}

 

posted @ 2017-02-27 10:28  慕码人  阅读(342)  评论(0编辑  收藏  举报