js、jquery、包括后台程序的验证、正则

各种正则吧

1、首先是js和jquery的验证,我就不分开了,直接写在一起得了(其实我也只是分不开,分不清楚罢了,哈哈)

    //这个是表单的验证啦,哎,就是麻烦,这种东西还要自己写来写去的,问题是,真的很绕。
    <script>
        $("#pw").blur(function(){
                var pw = $("input[name='pw']").val();
                if(pw != '' && 5 > pw.length){
                    $("#pw").css('border-color','red');
                    $("#pw_one").html("* 密码至少大于等于6位").css('color','red');
                    return false;
                }else{
                    $("#pw").css('border-color','');
                    $("#pw_one").html("* ").css('color','');
                }
            })

        //用户名:
        if(!checkUser(un.Trim())){
            $("#un").css('border-color','red');
            $("#un_one").html("* 不可用,请以字母、数字、下划线组成,字母开头,4-16位。").css('color','red');
            return false;
         }

         function checkUser(str){
            var re = /^[a-zA-z]\w{3,15}$/;
            return re.test(str);
         }

        String.prototype.Trim = function()
        {
            return this.replace(/(^\s*)|(\s*$)/g, "");
        }
    </script>

1.1 我要分开写,我看得清楚些

    //比较时间
    <script>
        var startTime = $("input[name='startTime']").val(),endTime = $("input[name='endTime']").val();
        /*比较时间*/
        var timestamp1 = new Date(startTime),timestamp2 = new Date(endTime);
        var d = timestamp1.getTime() - timestamp2.getTime();

        if(d >= 0){
                    $("#startTime_one").html(" * 结束时间不能大于或等于开始时间,请认真填写").css('color','red');
                }
    </script>

    <script>

        function clearNoNum(obj){   obj.value = obj.value.replace(/[^\d.]/g,"");  //清除“数字”和“.”以外的字符

        obj.value = obj.value.replace(/^\./g,"");  //验证第一个字符是数字而不是.

        obj.value = obj.value.replace(/\.{2,}/g,"."); //只保留第一个. 清除多余的.

        obj.value = obj.value.replace(".","$#$").replace(/\./g,"").replace("$#$",".");

    }
    </script>

2、下面的这些js验证可以写在公共的js文件里面,方便多个调用

    String.prototype.trim=function(){
    return this.replace(/(^\s*)|(\s*$)/g, "");
    }

    /**简易手机号码验证***/
    function funRegMobile(mobile){
        return (/^(1)\d{10}$/i.test(mobile))? true:false;
    }

    /**中文验证***/
    function funRegChinese(uname){
        return (/^[\u4E00-\u9FA5]+$/.test(uname))? true:false;
    }

    /**邮编***/
    function funRegZipCode(num){
        return (/^\d{6}$/i.test(num))? true:false;
    }

    /***特殊字符***/
    function funIllegalChar(str){
       return (/[`~!@#$%^&*()_+<>?:"{},.\/;'[\]]/im.test(str))? true:false;
    }

    /***数字***/
    function funRegNnm(num){
       return (/^[0-9]*[1-9][0-9]*$/i.test(num))? true:false;
    }

    /***非负数****/
    function funRegFloat(num){
        return (/^\d+(\.{0,1}\d+){0,1}$/i.test(num))? true:false;
    }

暂时好像找不到了,下次有再补上好了。下面是controller,也就是php的验证方法了,这些也可以写在公共的地方,然后调用

    // 把字符串转成数组,支持汉字,只能是utf-8格式的
    function StringToArray($str) {
        $result = array ();
        $len = strlen ( $str );
        $i = 0;
        while ( $i < $len ) {
            $chr = ord ( $str [$i] );
            if ($chr == 9 || $chr == 10 || (32 <= $chr && $chr <= 126)) {
                $result [] = substr ( $str, $i, 1 );
                $i += 1;
            } elseif (192 <= $chr && $chr <= 223) {
                $result [] = substr ( $str, $i, 2 );
                $i += 2;
            } elseif (224 <= $chr && $chr <= 239) {
                $result [] = substr ( $str, $i, 3 );
                $i += 3;
            } elseif (240 <= $chr && $chr <= 247) {
                $result [] = substr ( $str, $i, 4 );
                $i += 4;
            } elseif (248 <= $chr && $chr <= 251) {
                $result [] = substr ( $str, $i, 5 );
                $i += 5;
            } elseif (252 <= $chr && $chr <= 253) {
                $result [] = substr ( $str, $i, 6 );
                $i += 6;
            }
        }
        return $result;
    }

    // weiphp专用分割函数,同时支持常见的按空格、逗号、分号、换行进行分割
function wp_explode($string, $delimiter = "\s,;\r\n") {
    if (empty ( $string ))
        return array ();

    // 转换中文符号
    $string = iconv ( 'utf-8', 'gbk', $string );
    $string = preg_replace ( '/\xa3([\xa1-\xfe])/e', 'chr(ord(\1)-0x80)', $string );
    $string = iconv ( 'gbk', 'utf-8', $string );

    $arr = preg_split ( '/[' . $delimiter . ']+/', $string );
    return array_unique ( array_filter ( $arr ) );
}

重起一个代码块,免得太多看着头晕

    // 阿拉伯数字转中文表述,如101转成一百零一
function num2cn($number) {
    $number = intval ( $number );
    $capnum = array (
        "零",
        "一",
        "二",
        "三",
        "四",
        "五",
        "六",
        "七",
        "八",
        "九"
    );
    $capdigit = array (
        "",
        "十",
        "百",
        "千",
        "万"
    );

    $data_arr = str_split ( $number );
    $count = count ( $data_arr );
    for($i = 0; $i < $count; $i ++) {
        $d = $capnum [$data_arr [$i]];
        $arr [] = $d != '零' ? $d . $capdigit [$count - $i - 1] : $d;
    }
    $cncap = implode ( "", $arr );

    $cncap = preg_replace ( "/(零)+/", "0", $cncap ); // 合并连续“零”
    $cncap = trim ( $cncap, '0' );
    $cncap = str_replace ( "0", "零", $cncap ); // 合并连续“零”
    $cncap == '一十' && $cncap = '十';
    $cncap == '' && $cncap = '零';
    // echo ( $data.' : '.$cncap.' <br/>' );
    return $cncap;
}
function week_name($number = null) {
    if ($number === null)
        $number = date ( 'w' );

    $arr = array (
        "日",
        "一",
        "二",
        "三",
        "四",
        "五",
        "六"
    );

    return '星期' . $arr [$number];
}

    // 获取随机的字符串,用于token,EncodingAESKey等的生成
    function get_rand_char($length = 6) {
        $str = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz";
        $strLength = 61;

        for($i = 0; $i < $length; $i ++) {
            $res .= $str [rand ( 0, $strLength )];
        }

        return $res;
    }

这个还是比较经典的,相信下个公司开发的时候还是会用到,这是计算两点之间的经纬度距离,其实我之前也写过的,不过我不知道是哪个项目了。

/**
 * 根据两点间的经纬度计算距离
 *
 * @param float $lat
 *          纬度值
 * @param float $lng
 *          经度值
 */
function getDistance($lat1, $lng1, $lat2, $lng2) {
    $earthRadius = 6367000; // approximate radius of earth in meters
    //$earthRadius = 6370.856;

    // Convert these degrees to radians to work with the formula
    $lat1 = ($lat1 * pi()) / 180;
    $lng1 = ($lng1 * pi()) / 180;

    $lat2 = ($lat2 * pi()) / 180;
    $lng2 = ($lng2 * pi()) / 180;

    // Using the Haversine formula http://en.wikipedia.org/wiki/Haversine_formula calculate the distance
    $calcLongitude = $lng2 - $lng1;
    $calcLatitude = $lat2 - $lat1;
    $stepOne = pow( sin( $calcLatitude / 2 ), 2 ) + cos($lat1) * cos($lat2) * pow ( sin( $calcLongitude / 2), 2 );
    $stepTwo = 2 * asin( min( 1, sqrt ( $stepOne ) ) );
    $calculatedDistance = $earthRadius * $stepTwo;

    return round ( $calculatedDistance );
}

下面就是一些普通的验证了

/**手机号码正则**/
function funRegMobile($tel){
    /*return (preg_match("/^1[34578]\d{9}$/",$tel))? true:false;*/
    return (preg_match("/^1\d{10}$/",$tel))? true:false;
}
/**固定号码正则**/
function funcRegPhone($tel){
    return (preg_match("/^0\d{9,11}$/",$tel)) ? true : false;   
}
/**中文正则**/
function funRegChinese($key){
    return (preg_match("/^[\x7f-\xff]+$/",$key)) ? true:false;
}

有些人真的是疯狂的刷我们这种小网站的页面,我的妈呀,不得不防啊。

/**
*操作时间控制
*$newTime 当前操作时间
*$contTime 时间间隔
*$backUrl 错误返回页面
**/
function chkTimeDoAction($newTime,$contTime,$backUrl,$sessionName='wcDoActionTime') {
    !session($sessionName) || $contTime < $newTime - session($sessionName) ? $return = true : $return = false;
    !$return && $backUrl && showTips($backUrl,"操作速度过快,请在".$contTime."秒后再操作");
    !$return && exit('{"State":-99,"MSG":"操作太快,请稍候"}');
}

呵呵哒,我很早之前就写过数组的排序,那时候真的写得一塌糊涂啦。现在也是,哈哈

/**
*数组排序
*$array 数组
*$key 键
*order asc是升序 desc是降序
**/
function arr_sort($array,$key,$order="asc"){
    $arr_nums=$arr=array();
    foreach($array as $k=>$v){
        $arr_nums[$k]=$v[$key];
    }
    if($order=='asc'){
        asort($arr_nums);
    }else{
        arsort($arr_nums);
    }
    foreach($arr_nums as $k=>$v){
        $arr[$k]=$array[$k];
    }
    return $arr;
}

其实我自己是这样写的,也不能算我写得吧,因为我是这个思路,但是脑子糟糟的,所以不会写。

    //已经是通过sql查出了一个数组了,然后就排序。反正是活动的时间排序
        $var_arr_one = array();
        $var_arr_two = array();
        foreach($ac_list as $k=>$v){
            if($v['endTime'] < time()){
                $var_arr[] = $v;
            }else{
                $var_arr_two[] = $v;
            }
        }
        $i =count($var_arr)-1;
        for($i ;$i>=0;$i--){
            $var_arr_1[] = $var_arr[$i];
        }

        if($var_arr_1){
            $new = array_merge($var_arr_two,$var_arr_1);
        }else{
            $new = $var_arr_two;
        }

这个又是算日期的,还有完没完了。

/**
*算两个日期相隔多少年,多少月,多少日
*
**/
function diffDate($date1,$date2){ 
    if(strtotime($date1)>strtotime($date2)){ 
        $tmp=$date2; 
        $date2=$date1; 
        $date1=$tmp; 
    } 
    list($Y1,$m1,$d1)=explode('-',$date1); 
    list($Y2,$m2,$d2)=explode('-',$date2); 
    $Y=$Y2-$Y1; 
    $m=$m2-$m1; 
    $d=$d2-$d1; 
    if($d<0){ 
        $d+=(int)date('t',strtotime("-1 month $date2")); 
        $m--; 
    } 
    if($m<0){ 
        $m+=12; 
        $y--; 
    } 
    return array('year'=>$Y,'month'=>$m,'day'=>$d); 
}

那就先到这,我的妈呀,超级困得,因为我只睡了4个半小时。哎。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值