时间的正则表达式(比较简单)

   正则1种:    ([0-1]?[0-9]|2[0-9]):([0-5][0-9]):([0-5][0-9])         可以匹配 23:59:59,    可是当 数据为34:59:59 却也一样的能通过。(不够完善)

   正则2种:   测试 暂是通过 能比较完美的匹配时间的正则:([0-1][0-9]|2[0-3]|^[0-9]):([0-5]?[0-9]):([0-5]?[0-9])    当情况为3:4:7这样的时间格式也能通过,且分别得到时 分 秒

下面为 2种 做下解释:

([0-1][0-9]|2[0-3]|^[0-9]):([0-5]?[0-9]):([0-5]?[0-9]) 为什么能匹配3:4:7 是因为([0-5]?[0-9])之间的? 

当?字符紧跟在任何一个其他限制符 (*, +, ?, {n}, {n,}, {n,m}) 后面时,匹配模式是非贪婪的。非贪婪模式尽可能少的匹配所搜索的字符串,而默认的贪婪模式则尽可能多的匹配所搜索的字符串。例如,对于字符串 "oooo",'o+?' 将匹配单个 "o",而 'o+' 将匹配所有 'o'。  现在?跟在[0-5] ,所以是非贪婪的 那么他可以匹配0 也可以不匹配0.这个就根据自己的需求。 所以你只要把?去掉分秒就必须匹配09不会出现匹配9这种情况了.  /^([0-1][0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9])$/ 前面这个[0-1][0-9]|2[0-3] 是用来匹配01-09  11-19 20-23的字符串。

 

 

  JS 代码实现:   1.//日期格式为:YYYY|MM|DD|hh|ss.    例如:2010|04|09|12|25       {0:yyyy-MM-dd HH:ss}

            2. var pattern = /^(?:20\d{2})\|(?:0[1-9]|1[0-2])\|(?:0[1-9]|[12][0-9]|3[01])\|(?:0[0-9]|1[0-9]|2[0-3])\|(?:[0-5]\d)$/;

  分钟转换小时:例如 new TimeSpan(0,Convert.ToInt32(Eval("数据源(分钟数)")),0).TotalHours.ToString("F2")

posted on 2012-07-13 15:08  张晓鹏  阅读(1358)  评论(0编辑  收藏  举报