用到的一些php正则表达式,不断更新记录

在写代码的过程中用到的一些正则表达式,记录下来方便今后再次使用,有用到新的或者更好的正则就更新上来,20160417更新

/**
 * 验证url正则
 * 支持https/http 匹配 ip形式url匹配 二级域名匹配 端口匹配
 * 如 https://php.zhangxingju.com:80 返回true
 * @param string $str 需要验证的url
 * @return bool 匹配则返回true
 */
function is_url($str){
     $RegExp= '/^(http[s]?:\/\/)?(([0-9]{1,3}\.){3}[0-9]{1,3}|([0-9a-z_!~*\'()-]+\.)*([0-9a-z][0-9a-z-]{0,61})?[0-9a-z]\.'.
            '[a-z]{2,6})(:[0-9]{1,4})?((\/\?)|(\/[0-9a-zA-Z_!~\'\.;\?:@&=\+\$,%#-\/^\*\|]*)?)$/';
     return preg_match($RegExp,$str)?true:false;
}
/**
 * 验证QQ正则
 * 如 971328672 返回true
 * @param string $str 需要验证的QQ
 * @return string 匹配则返回QQ的字符串$str 不匹配返回 false
 */
function is_qq($str){
    $RegExp='/^[1-9][0-9]{4,11}$/';
    return preg_match($RegExp,$str)?$str:false;
}
/**
 * 验证中文  字母  数字 下划线  且下划线不能再开头和结尾 正则
 * 如 #ffd 返回false
 * @param string $str 需要验证的字符串
 * @return bool 匹配则返回true
 */
function is_chinese_alphanumeric_underline($str){
    $RegExp ='/^(?!_)[\{x4e00}-\x{9fa5}A-Za-z0-9_]\w*(?<!_)$/u';  //加u是为了中文字 十六进制显示
    return preg_match($RegExp,$str)?true:false;
}
/**
 * 验证大于0的正整数 正则
 * @param string $str 需要验证的字符串
 * @return bool 匹配则返回true
 */
function is_positive_integer($str){
    $RegExp ='/^\+?[1-9]\d*$/';
    return preg_match($RegExp,$str)?true:false;
}
/**
 * 验证邮箱地址 正则
 * 支持vip.qq.com  com.cn类型的多后缀的邮箱验证
 * @param string $str 需要验证的邮箱地址
 * @return bool 匹配则返回true
 */
function is_mail($str){
   $RegExp='/([a-z0-9]*[-_\.]?[a-z0-9]+)*@([a-z0-9]*[-_]?[a-z0-9]+)+[\.][a-z]{2,3}([\.][a-z]{2})?/i';
   return preg_match($RegExp,$str)?true:false;
}
/**
 * 验证中国手机号码 正则
 * @param string $str 需要验证的手机号
 * @return string 匹配则返回手机号
 */
function is_mobile($str){
    $RegExp='/^(?:13|14|15|17|18)[0-9]{9}$/';
    $RegExp2='/^(?:008869)[0-9]{8}$/';  //台湾手机号效验,内地拨打需要加886
    return preg_match($RegExp,$str)?$str:preg_match($RegExp2,$str)?$str:false;
}
/**
 * 不能包含特殊字符  /:*?“<>  | 正则
 * @param string $str 需要验证的字符串
 * @return bool 包含特殊字符则返回true
 */
function is_special_character($str){
     $RegExp ='/\/|\:|\*|\?|\"|\<|\>|\ |\|/';
     return preg_match($RegExp,$str)?true:false;
}