请开启 JavaScript
常用正则表达式 – 老迟笔记

常用正则表达式

1、严格校验时间格式 2021-10-10 09:50:32
<?php

function checkTimeFormat($timeFormat)
{
    if (!is_string($timeFormat)) {
        print_r('参数格式错误');die;
    }
    $pattern = '/^[1-9]\d{3}-(0[1-9]|1[0-2])-(0[1-9]|[12]\d|3[01]) (2[0123]|[01]\d):[0-5]\d:[0-5]\d$/';

    // 第一步:正则校验格式
    if (!preg_match($pattern, $timeFormat)) {
        print_r('非法(格式错误)');
        die;
    }

    // 第二步:使用DateTime校验逻辑合法性
    $date = DateTime::createFromFormat('Y-m-d H:i:s', $timeFormat);
    if (!$date || $date->format('Y-m-d H:i:s') !== $timeFormat) {
        print_r('非法(不存在这个时间)'); // 2021-02-29会走到这里
        die;
    }
}

$string = '2025-09-30 08:09:20';
checkTimeFormat($string);
2、手机号校验(支持国内手机号,含 170/171/199 等号段)
$phonePattern = '/^1(3[0-9]|4[01456879]|5[0-35-9]|6[2567]|7[0-8]|8[0-9]|9[0-35-9])\d{8}$/';
3、邮箱校验(支持常见格式,如 haveyb@163.com、56789098765@qq.com、username+tag@domain.co.uk)
$pattern = '/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/';
4、URL 校验(支持 http/https/ftp,含域名、路径、参数)
$pattern = '/^(https?:\/\/|ftp:\/\/)?([a-zA-Z0-9.-]+\.[a-zA-Z]{2,})(:\d+)?(\/[^\s]*)?$/';