微信小程序订阅消息参数校验正则

微信小程序订阅消息参数校验正则

public function verifySubscribe($data){
    $checkNameReg = '/^[\u4E00-\u9FA5]+$|^[a-zA-Z]+[\u4E00-\u9FA5]+$|^[\u4E00-\u9FA5]+[a-zA-Z]+$|^[a-zA-Z]+$/';
    $checkNumberReg = '/\d/';
    $letter='/^[a-zA-Z]+$/';//字母
    $checkOnlyChinaReg='/^[\u4E00-\u9FA5]+$/';
    $checkChinaAndEngReg='/^[\u4E00-\u9FA5]+$|^[a-zA-Z]+[\u4E00-\u9FA5]+$|^[\u4E00-\u9FA5]+[a-zA-Z]+$/';
    //特殊符号
    $checkSymbol = '/^[ \'.,:;*?~`!@#$%^&+=)(<>{}]|\]|\[|\/|\\\|\"|\|+$/';
    //数字
    $checkCharacterString = '/([\x{4e00}-\x{9fa5}]+)/u';
    $amount = '/^(\¥|\¥|\$|\€|\R\$|\лв|\£|\S\$|\ARS\$|\₫){1}[0-9]+$/';
    $isMob="/^1[34578]{1}\d{9}$/";//电话
    $isTel="/^([0-9]{3,4}-)?[0-9]{7,8}$/";//座机
    $carNumber1 = "/[京津冀晋蒙辽吉黑沪苏浙皖闽赣鲁豫鄂湘粤桂琼川贵云渝藏陕甘青宁新使]{1}[A-Z]{1}[0-9a-zA-Z]{5}$/u";//民用
    $carNumber2 = '/[京津冀晋蒙辽吉黑沪苏浙皖闽赣鲁豫鄂湘粤桂琼川贵云渝藏陕甘青宁新]{1}[A-Z]{1}[0-9a-zA-Z]{4}[挂警学领港澳]{1}$/u';//挂
    $carNumber3 = "/[京津冀晋蒙辽吉黑沪苏浙皖闽赣鲁豫鄂湘粤桂琼川贵云渝藏陕甘青宁新]{1}[A-Z]{1}[DF]{1}[0-9a-zA-Z]{5}$/u";//新能源
    $carNumber4 = "/[京津冀晋蒙辽吉黑沪苏浙皖闽赣鲁豫鄂湘粤桂琼川贵云渝藏陕甘青宁新]{1}[A-Z]{1}[0-9a-zA-Z]{5}[DF]{1}$/u";//大型新能源
    $carNumber5 = '/^WJ[京津冀晋蒙辽吉黑沪苏浙皖闽赣鲁豫鄂湘粤桂琼川贵云渝藏陕甘青宁新]?[0-9a-zA-Z]{5}$/ui';//武警
    $carNumber6 = "/[A-Z]{2}[0-9]{5}$/";//军用
    $phrase = '/^[\u4e00-\u9fa5]+$/';//汉字
    switch ($data['key']){
        case 'thing':
            if(mb_strlen($data['value'])>20){
                Response::error($data['title'].'内容不正确,该字段限制20个字符以内,内容格式不限,符号不能带有换行等控制字符');
        }
            break;
        case 'number':
            if(!is_numeric($data['value'])||mb_strlen($data['value'])>32){
                Response::error($data['title'].'内容不正确,该字段内容限制32位以内,只可输入数字,可带小数');
            }
            break;
        case 'letter':
            if(!preg_match($letter,$data['value'])||mb_strlen($data['value'])>32){
                Response::error($data['title'].'内容不正确,该字段内容限制32位以内,只可输入字母;');
            }
            die;
            break;
        case 'symbol':
            if(!preg_match($checkSymbol,$data['value'])||mb_strlen($data['value'])>5){
                Response::error($data['title'].'内容不正确,该字段内容限制5位以内,只可输入符号,不能带有换行等控制字符;');
            }
            break;
        case 'character_string':
            if(preg_match($checkCharacterString,$data['value'])||mb_strlen($data['value'])>32){
                Response::error($data['title'].' 内容不正确,该字段内容限制32位以内,可数字、字母或符号组合,符号不能带有换行等控制字符;');
            }
            break;
        case 'time':
        case 'date':
           $data['value'] = explode('~',$data['value']);
           foreach ( $data['value'] as $v){
               if(strstr($v,'年')&&strstr($v,'月')){
                   $v = str_replace('年','-',$v);
               }else{
                   $v = str_replace('年','',$v);
               }
               if(strstr($v,'月')&&strstr($v,'日')){
                   $v = str_replace('月','-',$v);
               }else{
                   $v = str_replace('月','',$v);
               }
               $v = str_replace('日','',$v);
               if(!strtotime($v)){
                   Response::error($data['title'].'内容不正确,该字段只可填写24小时制时间格式(支持+年月日),支持填时间段,两个时间点之间用“~”符号连接;');
               }
           }
            break;
        case 'amount':
            $data['value'] = str_replace('元','',$data['value']);
            if(!preg_match($amount,$data['value'])||mb_strlen($data['value'])>10){
                Response::error($data['title'].'内容不正确,该字段只可填写1个币种符号+10位以内纯数字,可带小数,结尾可带“元”;');
            }
            break;
        case 'phone_number':
            if((!preg_match($isMob,$data['value']) && !preg_match($isTel,$data['value']))||mb_strlen($data['value'])>17){
                Response::error($data['title'].'内容不正确,该字段只可填写17位以内数字、符号,数字可带小数,符号不能带有换行等控制字符;');
            }
            break;
        case 'car_number':
            if(!(preg_match($carNumber1,$data['value'])||preg_match($carNumber2,$data['value'])||preg_match($carNumber3,$data['value'])||preg_match($carNumber2,$data['value'])||preg_match($carNumber4,$data['value'])||preg_match($carNumber5,$data['value'])||preg_match($carNumber6,$data['value']))||mb_strlen($data['value'])>8){
                Response::error($data['title'].'内容不正确,该字段内容限制8位以内,第一位与最后一位可为汉字,其余为字母或数字;');
            }
            break;
        case 'name':
            //判断name字符合法性,违规则设为初始值
            if(preg_match_all($checkNameReg,$data['value'],$matches_1)    //验证是否符合name规范(没判断长度)
                || preg_match($checkNumberReg,$data['value'])   //如果含数字则违规
                ||(preg_match($checkOnlyChinaReg,$data['value']) || mb_strlen($data['value'])>10)   //如果纯中文且超出10个字则违规
                ||(preg_match($letter,$data['value']) || mb_strlen($data['value'])>20)  //如果是纯英文且超出20个则违规
                ||(preg_match($checkChinaAndEngReg,$data['value'])|| mb_strlen($data['value'])>10)){ //如果是中英混合且超出10个字则违规
                Response::error($data['title'].'内容不正确,该字段内容只可填写10个以内纯汉字或20个以内纯字母或符号,中文和字母混合按中文名算,10个字内,符号不能带有换行等控制字符;');
            }
            break;
        case 'phrase':
            if(preg_match($phrase,$data['value'])||mb_strlen($data['value'])>5){
                Response::error($data['title'].'内容不正确,该字段内容限制5个字以内,只可输入纯汉字');
            }
            break;
    }
}
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值