常用的JS验证和函数汇总


Posted in Javascript onDecember 23, 2014

下面是我常用一些JS验证和函数,有一些验证我直接写到了对象的属性里面了,可以直接通过对象.方法来调用

//浮点数除法运算

function fdiv(a, b, n) {

    if (n == undefined) { n = 2; }

    var t1 = 0, t2 = 0, r1, r2;

    try { t1 = a.toString().split(".")[1].length } catch (e) { }

    try { t2 = b.toString().split(".")[1].length } catch (e) { }

    with (Math) {

        r1 = Number(a.toString().replace(".", ""));

        r2 = Number(b.toString().replace(".", ""));

        return ((r1 / r2) * pow(10, t2 - t1)).toFixed(n);

    }

}
//浮点数乘法运算

function fmul(a, b, n) {

    if (n == undefined) { n = 2; }

    var m = 0, s1 = a.toString(), s2 = b.toString();

    try { m += s1.split(".")[1].length } catch (e) { }

    try { m += s2.split(".")[1].length } catch (e) { }

    return (Number(s1.replace(".", "")) * Number(s2.replace(".", "")) / Math.pow(10, m)).toFixed(n);

}
//浮点数加法运算

function fadd(a, b, n) {

    if (n == undefined) { n = 2; }

    var r1, r2, m;

    try { r1 = a.toString().split(".")[1].length } catch (e) { r1 = 0 }

    try { r2 = b.toString().split(".")[1].length } catch (e) { r2 = 0 }

    m = Math.pow(10, Math.max(r1, r2))

    return ((a * m + b * m) / m).toFixed(n);

}
//浮点数减法运算

function fsub(a, b, n) {

    if (n == undefined) { n = 2; }

    var r1, r2, m;

    try { r1 = a.toString().split(".")[1].length } catch (e) { r1 = 0 }

    try { r2 = b.toString().split(".")[1].length } catch (e) { r2 = 0 }

    m = Math.pow(10, Math.max(r1, r2));

    //动态控制精度长度

    //n = (r1 >= r2) ? r1 : r2;

    return ((a * m - b * m) / m).toFixed(n);

}

Number.prototype.add = function (arg) {

    return fadd(this, arg);

}

Number.prototype.subs = function (arg) {

    return fsub(this, arg);

}

Number.prototype.mul = function (arg) {

    return fmul(this, arg);

}

Number.prototype.div = function (arg) {

    return fdiv(this, arg);

}
///格式化数字位数,不足位数默认左边补0,如果指定了参数2并且参数2的值为1则右边补0

Number.prototype.FormatLen = function (len, direct) {

    var d = parseInt(direct);

    if (isNaN(d)) { d = 0; }

    var num = this.toString();

    if (num.length < len) {

        for (var i = num.length; i < len; i++) {

            if (d == 0) {

                num = "0" + num;

            }

            else {

                num += "0";

            }

        }

    }

    return num;

}
//格式化小数点数位,可以指定小数位数,是否四舍五入等参数

Number.prototype.FormatRadix = function (len, IsRound) {

    var num = this.toString();

    var numArr = num.split('.');

    var rad = 0;

    var numpart = parseInt(numArr[0]);

    if (numArr.length >= 2) {

        if (numArr[1].length < len) {

            rad = parseInt(numArr[1]).FormatLen(len, 1);

        }

        else {

            if (numArr[1].length == len) {

                rad = numArr[1];

            }

            else {

                rad = numArr[1].substr(0, len);

                if (IsRound) {

                    var d = parseInt(numArr[1].substr(len, 1));

                    if (d >= 5) { rad += 1; if (rad.toString().length > len) { numpart += 1; rad = rad.toString().substr(1, len); } }

                }

            }
        }

    }

    else {

        rad = rad.FormatLen(len);

    }

    return numpart + "." + rad;

}
//检测字符串中是否有相同的元素split是字符串分隔符,如果指定了分隔符,则判断分隔符为分隔的字符串是否有重复,如果没指定则判断单个字符串是否有重复

//有重复返回true

String.prototype.CompareElement = function (s) {

    var str = this.toString();

    if (s == undefined) {

        for (var i = 0; i < str.length; i++) {

            for (j = i + 1; j < str.length; j++) {

                if (str.substr(i, 1) == str.substr(j, 1)) {

                    return true;

                }

            }

        }

    }

    else {

        var strArr = str.split(s);

        for (var i = 0; i < strArr.length; i++) {

            for (var j = i + 1; j < strArr.length; j++) {

                if (strArr[i] == strArr[j]) {

                    return true;

                }

            }

        }

    }

    return false;

}

String.prototype.replaceAll = function (str, tostr) {

    oStr = this;

    while (oStr.indexOf(str) > -1) {

        oStr = oStr.replace(str, tostr);

    }

    return oStr;

}

Array.prototype.CompareElement = function () {

    var strArr = this;

    for (var i = 0; i < strArr.length; i++) {

        for (var j = i + 1; j < strArr.length; j++) {

            if (strArr[i] == strArr[j]) {

                return true;

            }

        }

    }

    return false;

}
//字符串转组数,如果未指定分隔符s,则默认以,分隔分隔符,如果指定分隔符为空则将每个字符作为一个数组元素

String.prototype.ToArray = function (s) {

    if (s == undefined) { s = ","; }

    var strArr = [];

    strArr = this.split(s);

    return strArr;

}
//将一个数组转换一个字符串,所有元素使用指定的分隔符连接,默认分隔为,

Array.prototype.ToIDList = function (s) {

    if (s == undefined) { s = ","; }

    var list = "";

    for (var i = 0; i < this.length; i++) {

        list += (list == "" ? this[i] : s + "" + this[i]);

    }

    return list;

}
//获取指定元素的位置索引,元素不存在返回-1

Array.prototype.GetIndex = function (s) {

    var index = -1;

    for (var i = 0; i < this.length; i++) {

        if ((s + "") == this[i]) {

            index = i;

        }

    }

    return index;

}
//将指定元素从数组中删除

Array.prototype.Remove = function (s) {

    var list = "";

    for (var i = 0; i < this.length; i++) {

        if (s != this[i]) {

            list += (list == "" ? this[i] : "," + this[i]);

        }

    }

    return list.ToArray();

}
///将数组进行数字排序asc指定是否进行升序排序,可以为true或者false,未指定为升序

Array.prototype.SortByNumber = function (asc) {

    if (asc == undefined) { asc = true; }

    if (asc) {

        return this.sort(SortNumberAsc);

    }

    else {

        return this.sort(SortNumberDesc);

    }

}

Array.prototype.InArray = function (e) {

    var IsIn = false;

    for (var i = 0; i < this.length; i++) {

        if (this[i] == (e + "")) {

            IsIn = true;

        }

    }

    return IsIn;

}

String.prototype.Trim = function (s) { return Trim(this, s); }

String.prototype.LTrim = function (s) { return LTrim(this, s); }

String.prototype.RTrim = function (s) { return RTrim(this, s); }

//配合Array.SortByNumer使用,将数字进行数组降序排序

function SortNumberDesc(a, b) {

    return b - a;

}

//配合Array.SortByNumer使用,将数字进行数组升序排序

function SortNumberAsc(a, b) {

    return a - b;

}

//此处为独立函数

function LTrim(str, s) {

    if (s == undefined) { s = " "; }

    if (str == s && s != " ") { return s; }

    var i;

    for (i = 0; i < str.length; i++) {

        if (str.charAt(i) != s && str.charAt(i) != s) break;

    }

    str = str.substring(i, str.length);

    return str;

}

function RTrim(str, s) {

    var i;

    if (str == s && s != " ") { return s; }

    if (s == undefined) { s = " "; }

    for (i = str.length - 1; i >= 0; i--) {

        if (str.charAt(i) != s && str.charAt(i) != s) break;

    }

    str = str.substring(0, i + 1);

    return str;

}

function Trim(str, s) {

    return LTrim(RTrim(str, s), s);

}
///检测字符串是否是由中文,英文,数字以及下划线组成的

function chkNickName(str) {

    var pattern = /^[\w\u4e00-\u9fa5]+$/gi;

    if (pattern.test(str)) {

        return true;

    }

    return false;

}
//判断长度(长度不限为0)

String.prototype.IsLen = function () {

    var isRightFormat = false;

    var minnum = arguments[0] ? arguments[0] : 0;

    var maxnum = arguments[1] ? arguments[1] : 0;

    isRightFormat = (minnum == 0 && maxnum == 0 ? true : (calculate_byte(this) >= minnum && calculate_byte(this) <= maxnum ? true : false));

    return isRightFormat;

}
//验证字符串是否为字母+数字+_+-

String.prototype.IsStr = function () {

    var myReg = /^[0-9a-zA-Z\-\_]+$/;

    if (myReg.test(this)) return true;

    return false;

}
//验证用户名

String.prototype.IsUsername = function () {

    var myReg = /^[0-9a-zA-Z\-\_]{3,50}$/;

    if (myReg.test(this)) return true;

    return false;

}
//验证密码

String.prototype.IsPassword = function () {

    var myReg = /^[0-9a-zA-Z`~!@#$%^&*()-_+=\{\}\[\]\;\:\"\'\?\/\\]{6,}$/;

    if (myReg.test(this)) return true;

    return false;

}
//验证是否为字母

String.prototype.IsEn = function () {

    var myReg = /^[a-zA-Z]+$/;

    if (myReg.test(this)) return true;

    return false;

}
//验证是否为汉字

String.prototype.IsCn = function () {

    var myReg = /^[\u0391-\uFFE5]+$/;

    if (myReg.test(this)) return true;

    return false;

}
//验证E-mail

String.prototype.IsEmail = function () {

    var myReg = /([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)/;

    if (myReg.test(this)) return true;

    return false;

}
//验证MSN

String.prototype.IsMSN = function () {

    var myReg = /([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)/;

    if (myReg.test(this)) return true;

    return false;

}
//验证QQ号码

String.prototype.IsQQ = function () {

    var myReg = /^[1-9]\d{4,10}$/;

    if (myReg.test(this)) return true;

    return false;

}
//验证网址

String.prototype.IsHttpUrl = function () {

    var myReg = /^http:\/\/[A-Za-z0-9]+\.[A-Za-z0-9]+[\/=\?%\-&_~`@[\]\':+!]*([^<>\"\"])*$/;

    if (myReg.test(this)) return true;

    return false;

}
//验证域名

String.prototype.IsDoMainName = function () {

    var myReg = /^[0-9a-zA-Z]([0-9a-zA-Z\-]+\.){1,3}[a-zA-Z]{2,4}?$/;

    if (myReg.test(this)) return true;

    return false;

}
//验证IPV4地址

String.prototype.IsIpv4 = function () {

    var myReg = /^(2[0-5]{2}|1?[0-9]{1,2}).(2[0-5]{2}|1?[0-9]{1,2}).(2[0-5]{2}|1?[0-9]{1,2}).(2[0-5]{2}|1?[0-9]{1,2})$/;

    if (myReg.test(this)) return true;

    return false;

}
//验证图片地址(不支持由CGI动态生成的图片)

String.prototype.IsImgURL = function () {

    var myReg = /^\.(jpeg|jpg|gif|bmp|png|pcx|tiff|tga|lwf)$/;

    if (myReg.test(this)) return true;

    return false;

}
//验证手机号码

String.prototype.IsCellPhone = function () {

    var myReg = /^((\(\d{3}\))|(\d{3}\-))?1[3,5]\d{9}$/;

    if (myReg.test(this)) return true;

    return false;

}
//验证固定电话

String.prototype.IsPhone = function () {

    var myReg = /^[+]{0,1}(\d){1,3}[ ]?([-]?((\d)|[ ]){1,12})+$/;

    if (myReg.test(this)) return true;

    return false;

}
//验证邮编

String.prototype.IsZipCode = function () {

    var myReg = /[0-9]{6}/;

    if (myReg.test(this)) return true;

    return false;

}
//验证身份证号码

String.prototype.IsIdCard = function () {

    var myReg = /(^([\d]{15}|[\d]{18}|[\d]{17}[xX]{1})$)/;

    if (myReg.test(this)) return true;

    return false;

}
//验证日期格式YY-MM-DD

String.prototype.IsDateFormat = function () {

    var myReg = /^[0-9]{4}-[0-9]{1,2}-[0-9]{1,2}$/;

    if (myReg.test(this)) return true;

    return false;

}
//验证时间格式HH:MM:SS

String.prototype.IsRangeTime = function () {

    var myReg = /^(\d{2}):(\d{2}):(\d{2})$/;

    if (myReg.test(this)) return true;

    return false;

}
//验证金额格式

String.prototype.IsMoney = function () {

    var myReg = /^[0-9]{1,8}[.]{0,1}[0-9]{0,6}$/;

    if (myReg.test(this)) return true;

    return false;

}
//字验证数字格式并判断数字的围(min:最小值;max:最大值.)

String.prototype.IsInt = function () {

    var isRightFormat = false;

    var minnum = arguments[0] ? arguments[0] : 0;

    var maxnum = arguments[1] ? arguments[1] : 0;

    var myReg = /^[-\+]?\d+$/;

    if (myReg.test(this)) {

        isRightFormat = (minnum == 0 && maxnum == 0 ? true : (this > minnum && this < maxnum ? true : false));

    }

    return isRightFormat;

}
//验证搜索关键字

String.prototype.IsSearch = function () {

    var myReg = /^[\|\"\'<>,.*&@#$;:!^()]/;

    if (myReg.test(this)) return false;

    return true;

}
//js准确计算字符串长度

function calculate_byte(sTargetStr) {

    var sTmpStr, sTmpChar;

    var nOriginLen = 0;

    var nStrLength = 0;
    sTmpStr = new String(sTargetStr);

    nOriginLen = sTmpStr.length;
    for (var i = 0; i < nOriginLen; i++) {

        sTmpChar = sTmpStr.charAt(i);
        if (escape(sTmpChar).length > 4) {

            nStrLength += 2;

        } else if (sTmpChar != '\r') {

            nStrLength++;

        }

    }
    return nStrLength;

}
//颜色值;

String.prototype.IsColor = function () {

    var s = arguments[0] ? arguments[0] : "";

    s = s.Trim();

    if (s.length != 7) return false;

    return s.search(/\#[a-fA-F0-9]{6}/) != -1;

}
//js日期格式化

Date.prototype.format = function (format) {

    var o = {

        "M+": this.getMonth() + 1, //month 

        "d+": this.getDate(), //day 

        "h+": this.getHours(), //hour 

        "m+": this.getMinutes(), //minute 

        "s+": this.getSeconds(), //second 

        "q+": Math.floor((this.getMonth() + 3) / 3), //quarter 

        "S": this.getMilliseconds() //millisecond 

    }
    if (/(y+)/.test(format)) {

        format = format.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));

    }
    for (var k in o) {

        if (new RegExp("(" + k + ")").test(format)) {

            format = format.replace(RegExp.$1, RegExp.$1.length == 1 ? o[k] : ("00" + o[k]).substr(("" + o[k]).length));

        }

    }

    return format;

}
function HasChinese(value) {

    if (/^[\u4e00-\u9fa5]+$/.test(value)) {

        return true;

    }

    return false;

}
function ToDate(dateStr) {

    var dStr = dateStr.toString();

    dateStr = dStr.replaceAll("-", "/");
    return new Date(Date.parse(dateStr));

}
//是否ID列表

String.prototype.IsIdList = function (s) {

    if (s == undefined) {

        s = ",";

    }

    var arr = this.split(s);

    for (var i = 0; i < arr.length; i++) {

        if (isNaN(parseInt(arr[i]))) { return false; }

    }

    return true;

}
//获取事件触发的对象

function getEventTarget(e) {

    e = e || window.event;

    return e.target || e.srcElement;

} 

代码都很简洁,简单,功能却都很实用,有需要的小伙伴参考下

Javascript 相关文章推荐
javascript数组的使用
Mar 28 Javascript
js获取键盘按键响应事件(兼容各浏览器)
May 16 Javascript
js jquery分别实现动态的文件上传操作按钮的添加和删除
Jan 13 Javascript
jquery制作搜狐快站页面效果示例分享
Feb 21 Javascript
常用的JavaScript WEB操作方法分享
Feb 28 Javascript
js实现点击链接后延迟3秒再跳转的方法
Jun 05 Javascript
JS实现简单的图书馆享元模式实例
Jun 30 Javascript
js实现的页面矩阵图形变换特效
Jan 26 Javascript
Highcharts学习之数据列
Aug 03 Javascript
jQuery Easyui使用(一)之可折叠面板的布局手风琴菜单
Aug 17 Javascript
微信小程序 教程之wxapp视图容器 swiper
Oct 19 Javascript
Javascript中的getter和setter初识
Aug 17 Javascript
jQuery后代选择器用法实例
Dec 23 #Javascript
浅析Javascript中“==”与“===”的区别
Dec 23 #Javascript
javascript实现微信分享
Dec 23 #Javascript
JSON取值前判断
Dec 23 #Javascript
jQuery基础语法实例入门
Dec 23 #Javascript
jQuery回调函数的定义及用法实例
Dec 23 #Javascript
jQuery中odd选择器的定义和用法
Dec 23 #Javascript
You might like
3种平台下安装php4经验点滴
2006/10/09 PHP
简单示例AJAX结合PHP代码实现登录效果代码
2008/07/25 PHP
php Http_Template_IT类库进行模板替换
2009/03/19 PHP
处理php自动反斜杠的函数代码
2010/01/05 PHP
PHP代码审核的详细介绍
2013/06/13 PHP
PHP5.5和之前的版本empty函数的不同之处
2014/06/13 PHP
php中get_cfg_var()和ini_get()的用法及区别
2015/03/04 PHP
PHP数组和explode函数示例总结
2015/05/08 PHP
PHP登录验证码的实现与使用方法
2016/07/07 PHP
PHP配置ZendOpcache插件加速
2019/02/14 PHP
JS中字符问题(二进制/十进制/十六进制及ASCII码之间的转换)
2008/11/03 Javascript
jQuery 联动日历实现代码
2012/05/31 Javascript
javascript变量作用域使用中常见错误总结
2013/03/26 Javascript
Javascript 浮点运算的问题分析与解决方法
2013/08/27 Javascript
apply和call方法定义及apply和call方法的区别
2015/11/15 Javascript
JS简单实现无缝滚动效果实例
2016/08/24 Javascript
AngularJS深入探讨scope,继承结构,事件系统和生命周期
2016/11/02 Javascript
lhgcalendar时间插件限制只能选择三个月的实现方法
2017/07/03 Javascript
vant(ZanUi)结合async-validator实现表单验证的方法
2018/12/06 Javascript
vue-router的钩子函数用法实例分析
2019/10/26 Javascript
ant-design-vue 快速避坑指南(推荐)
2020/01/21 Javascript
js实现淘宝浏览商品放大镜功能
2020/10/28 Javascript
vue使用element-ui实现表单验证
2020/12/13 Vue.js
Python类定义和类继承详解
2015/05/08 Python
Python实现FTP上传文件或文件夹实例(递归)
2017/01/16 Python
python3+PyQt5实现使用剪贴板做复制与粘帖示例
2017/01/24 Python
浅谈django model postgres的json字段编码问题
2018/01/05 Python
基于python中theano库的线性回归
2018/08/31 Python
python实现五子棋游戏(pygame版)
2020/01/19 Python
Django实现图片上传功能步骤解析
2020/04/22 Python
Pycharm创建python文件自动添加日期作者等信息(步骤详解)
2021/02/03 Python
size?瑞典:英国伦敦的球鞋精品店
2018/03/01 全球购物
音乐系毕业生自荐信
2013/10/27 职场文书
党员国庆节演讲稿范文2014
2014/09/21 职场文书
七年级语文教学反思
2016/03/03 职场文书
vue项目打包后路由错误的解决方法
2022/04/13 Vue.js