php判断一个字符串是否符合时间格式

$preg = '/^([12]\d\d\d)-(0?[1-9]|1[0-2])-(0?[1-9]|[12]\d|3[0-1]) ([0-1]\d|2[0-4]):([0-5]\d)(:[0-5]\d)?$/';

preg_match($preg, '2018-1-2 24:00:50')

年:([12]\d\d\d) 表示第一位只能是1或者2,后三位数字即可;范围1000-2999;

月:(0?[1-9]|1[0-2])   表示当月份为1-9时,前面的0可传可不传,当十位数是1时,个位数只能是0-2,范围1-12

日:(0?[1-9]|[12]\d|3[0-1])表示当日是1-9时,前面的0可传可不传,当十位数是3时,个位数为0或1,范围1-31;

时:([0-1]\d|2[0-4]) 表示当一个字符是0或1的时候,第二个数字是0-9,第一个数字是2的时候,第二个数字是0-4,那么时的范围是00-24;

分:([0-5]\d)    分的范围是00-59;

秒:(:[0-5]\d)?  表示秒可传可不传,例如:2018-5-16 16:46,2018-5-16 16:46:00均可验证通过;

注意:此事件只判断格式是否正确,牵扯到是否闰年,特殊月份包含天数不加判断。

  • 字符功能
  1. . 匹配任意1个字符(除了\n)
  2. [ ] 匹配[ ]中列举的字符
  3. \d 匹配数字,即0-9
  4. \D 匹配非数字,即不是数字
  5. \s 匹配空白,即 空格,tab键
  6. \S 匹配非空白
  7. \w 匹配单词字符,即a-z、A-Z、0-9、_
  8. \W 匹配非单词字符
  9. $ 以上一个字符结尾
  • 表示数量
  1. 匹配多个字符的相关格式
  2. 字符 功能
  3. 匹配前一个字符出现0次或者无限次,即可有可无
  4. 匹配前一个字符出现1次或者无限次,即至少有1次
  5. ? 匹配前一个字符出现1次或者0次,即要么有1次,要么没有
  6. {m} 匹配前一个字符出现m次
  7. {m,} 匹配前一个字符至少出现m次
  8. {m,n} 匹配前一个字符出现从m到n次

  • 表示边界
  1. ^ 匹配字符串开头
  2. $ 匹配字符串结尾
  3. \b 匹配一个单词的边界
  4. \B 匹配非单词边界
  • 匹配分组
  1. | 匹配左右任意一个表达式
  2. (ab) 将括号中字符作为一个分组
  3. \num 引用分组num匹配到的字符串
  4. (?P) 分组起别名
  5. (?P=name) 引用别名为name分组匹配到的字符串

你可能感兴趣的:(php,正则表达式)