Skip to content

PHP中常用的一些正则表达式

TIP

正则表达式是一种强大的工具,用于在字符串中搜索和匹配模式。在PHP中,正则表达式通常用于验证用户输入、搜索和替换文本等。本文将介绍一些在PHP中常用的正则表达式示例。

匹配邮箱地址

php
function validate_email($email_address)
{
    if(preg_match("/^([a-zA-Z0-9])+([a-zA-Z0-9\._-])*@([a-zA-Z0-9_-])+([a-zA-Z0-9\._-]+)+$/", $email_address))
    {
        return true;
    }    
    return false;
}
//使用 FILTER_VALIDATE_EMAIL 过滤器
function validate_email($email_address)
{
    if(filter_var($email, FILTER_VALIDATE_EMAIL))
    {
        return true;
    }    
    return false;
}

匹配手机号码

php
function validate_mobile($mobile)
{
    if(preg_match("/^1[3456789]\d{9}$/", $mobile))
    {
        return true;
    }    
    return false;
}

匹配电话号码

php
function validate_phone($phone)
{
    if(preg_match("/^0[0-9]{2,3}[-]?\d{7,8}$/", $phone))
    {
        return true;
    }    
    return false;
}

匹配URL

php
function validate_url($url)
{
    if(preg_match("/^(http|https):\/\/([a-zA-Z0-9_-]+\.)+[a-zA-Z]{2,3}(:[0-9]+)?(\/[a-zA-Z0-9_.-]+)*\/?$/", $url))
    {
        return true;
    }    
    return false;
}

匹配IP地址

php
function validate_ip($ip)
{
    if(preg_match("/^((25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d)\.){3}(25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d)$/", $ip))
    {
        return true;
    }    
    return false;
}

匹配身份证号码

php
function validate_id_card($idCardNumber)
{
     // 身份证号长度为 15 位或 18 位
    $pattern = '/^(?:\d{15}|\d{17}[\dxX])$/';
    if (!preg_match($pattern, $idCardNumber)) {
        return false;
    }
 
    // 15 位身份证号转换为 18 位
    if (strlen($idCardNumber) === 15) {
        $idCardNumber = substr($idCardNumber, 0, 6) . '19' . substr($idCardNumber, 6, 9);
    }
 
    // 计算校验位
    $weights = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2];
    $checkCodes = ['1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'];
    $sum = 0;
    for ($i = 0; $i < 17; $i++) {
        $sum += $weights[$i] * (int) $idCardNumber[$i];
    }
    $checkCodeIndex = $sum % 11;
 
    // 验证校验位
    $lastChar = strtoupper($idCardNumber[17]);
    return $lastChar === $checkCodes[$checkCodeIndex];
}

用户名验证

php
//6-20位字符,必须以字母开头,只能包含数字、字母、下划线,不区分大小写
function validate_username($str)
{
    if(preg_match("/^[a-zA-Z_][a-zA-Z0-9-_]{5,19}$", $str))
    {
        return true;
    }    
    return false;
}

密码验证

php
//6-16位字符,需包括数字与英文字母
function validate_password($str)
{
    if(preg_match("/^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{6,16}$/", $str))
    {
        return true;
    }    
    return false;
}

上次更新于: