PHP常用正则表达式判断和验证函数

—— 正则校验手机、邮箱、字符、密码强度、一些特殊的需求等
2017-11-21 阅读(350)

在这里我把经常要用的正则表达式整理一下,封装成php函数,分享给大家,同时也方便自己,省的在网上搜索许久未果。如有不合理之处,请多多指教。


<?php
/**
 * 常用正则表达式判断和验证函数
 * User: cxq
 * Date: 2017-11-20
 * Time: 21:35
 */

/**
 * 是否是字母
 * @param $value
 * @return bool
 */
function is_alpha($value){
    $pattern = '/^[A-Za-z]+$/';
    return preg_match($pattern, $value) ? true : false;
}

/**
 * 是否是字母和数字
 * @param $value
 * @return bool
 */
function is_alpha_num($value){
    $pattern = '/^[A-Za-z0-9]+$/';
    return preg_match($pattern, $value) ? true : false;
}

/**
 * 是否是字母、数字和下划线_
 * @param $value
 * @return bool
 */
function is_alpha_num_under($value){
    $pattern = '/^[A-Za-z0-9\_]+$/';
    return preg_match($pattern, $value) ? true : false;
}

/**
 * 是否是字母、数字和汉字
 * @param $value
 * @return bool
 */
function is_alpha_num_chs($value){
    $pattern = '/^[a-zA-Z0-9\x{4e00}-\x{9fa5}]+$/u';
    return preg_match($pattern, $value) ? true : false;
}

/**
 * 是否是字母、数字、汉字和下划线_
 * @param $value
 * @return bool
 */
function is_alpha_num_chs_under($value){
    $pattern = '/^[a-zA-Z0-9\_\-\x{4e00}-\x{9fa5}]+$/u';
    return preg_match($pattern, $value) ? true : false;
}

/**
 * 是否是手机号码
 * @param $mobile
 * @return bool
 */
function is_mobile($mobile){
    $pattern = '/^1[34578]\d{9}$/';
    return preg_match($pattern, $mobile) ? true : false;
}

/**
 * 是否是邮箱地址
 * @param $email
 * @return bool
 */
function is_email($email){
    //if PHP < 5.2.0
    //$pattern = "/^([a-z0-9+_]|\\-|\\.)+@(([a-z0-9_]|\\-)+\\.)+[a-z]{2,6}\$/i";
    //return preg_match($pattern, $email) ? true : false;
    //if PHP >= 5.2.0
    return filter_var($email, FILTER_VALIDATE_EMAIL) ? true : false;
}

/**
 * 是否是URL地址
 * @param $url
 * @return bool
 */
function is_url($url){
    //if PHP < 5.2.0
    //$pattern  = "/((https?|ftp|news):\/\/)?([a-z]([a-z0-9\-]*[\.。])+(aero|arpa|biz|com|coop|edu|gov|info|int|jobs|mil|museum|name|nato|net|org|pro|travel|[a-z]{3})|(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]))(\/[a-z0-9_\-\.~]+)*(\/([a-z0-9_\-\.]*)(\?[a-z0-9+_\-\.%=&]*)?)?(#[a-z][a-z0-9_]*)?/usi";
    //return preg_match($pattern, $url) ? true : false;
    //if PHP >= 5.2.0
    return filter_var($url, FILTER_VALIDATE_URL) ? true : false;
}

/**
 * 是否是IP地址
 * @param $ip
 * @return bool
 */
function is_ip($ip){
    //if PHP < 5.2.0
    //$pattern  = "/^(?:(?:[01]?\d{1,2}|2[0-4]\d|25[0-5])\.){3}(?:[01]?\d{1,2}|2[0-4]\d|25[0-5])$/";
    //return preg_match($pattern, $ip) ? true : false;
    //if PHP >= 5.2.0
    return filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4 | FILTER_FLAG_IPV6) ? true : false;
}

/**
 * 是否是日期格式Y-m-d
 * @param $date
 * @return bool
 */
function is_date($date){
    $pattern = '/^[\d]{4}-[\d]{2}-[\d]{2}$/';
    return preg_match($pattern, $date) ? true : false;
}

/**
 * 是否是时间格式Y-m-d h:i:s
 * @param $time
 * @return bool
 */
function is_datetime($time){
    $pattern = '/^[\d]{4}-[\d]{2}-[\d]{2}\s[\d]{2}:[\d]{2}:[\d]{2}$/';
    return preg_match($pattern, $time) ? true : false;
}

/**
 * 是否是身份证号码15位和18位(含带X)
 * @param string $identity
 * @return boolean
 */
function is_identity($identity) {
    $pattern = '/(^\d{15}$)|(^\d{17}([0-9]|X)$)/';
    return preg_match($pattern, $identity) ? true : false;
}

/**
 * 是否是国内固定电话号码(区号-座机号码-分机号码|区号-座机号码)
 * @param string $phone
 * @return boolean
 */
function is_phone($phone) {
    $pattern = '/(^(\d{3,4})-(\d{7,8})-(\d{1,4})$)|(^(\d{3,4})-(\d{7,8})$)/';
    return preg_match($pattern, $phone) ? true : false;
}

/**
 * 是否是邮政编码
 * @param $code
 * @return bool
 */
function is_postcode($code){
    $pattern = '/^[1-9][0-9]{5}$/';
    return preg_match($pattern, $code) ? true : false;
}

/**
 * 正则验证用户名是否合法
 * 只允许数字、字母和下划线_(6-20位)
 * @param string $username
 * @return bool
 */
function check_username($username){
    $pattern = '/^[_0-9a-z]{6,20}$/i';
    return preg_match($pattern, $username) ? true : false;
}

/**
 * 正则验证密码强度(小于6位,强度为1)
 * 密码字符包括:小写字母、大写字母、数字、符号等
 * @param string $pass 密码
 * @return number 可能为:无0、弱1、中2、3强、4很强
 */
function check_security($pass){
    $pattern = '/^(?:([a-z])|([A-Z])|([0-9])|(.)){6,}|(.)+$/';
    $replacement = '$1$2$3$4$5';
    return strlen(preg_replace($pattern, $replacement, $pass));
}


zip icon
PHP常用判断校验正则函数.zip 255fbc8525c9e9e58e24de4a18fc25d7

已下载:5 次     

原创文章,转载请注明出处:https://www.weizhixi.com/user/index/article/id/1.html

分类:
点击(434) 阅读(350) 举报