上一篇写到了jQuery插件的3种类型,介绍了第一种类型的写法--封装jQuery对象的方法插件。这一篇要介绍第二种插件类型:封装全局函数的插件;这类插件就是在jQuery命名空间内部添加函数;这类插件就是普通的函数,没有什么特别的地方。既然普通+无特点...那这篇还要讲什么呢,忧思辗转呢。

  那就先开始讲解第二类插件吧,记得上面讲过,所有的插件都放在下面的一段代码之内:

; (function ($) {

    //编写代码

})(jQuery);

  封装全局函数的插件实现的通过$.extend();方法

; (function ($) {

    //编写代码
    $.extend({
        //编写相应函数

     });

})(jQuery);

  ok,回顾了点知识,下面就写个简单的验证方法吧;验证日期时间方法

; (function ($) {

  //扩展jQuery类本身,为类添加新方法(不需要实例化jQuery对象就可以执行)
$.extend({
    isDateTime: function (value) {
            //验证日期时间:2013-9-9 10:00:00
            var regex = /^\d{1,4}(\-|\/)((0?\d)|10|11|12)(\-|\/)(([1-2]\d|30|31)|(0?\d)) ((2[0-3]|\d|[0-1]\d)\:[0-5][0-9])(\:[0-5][0-9])?$/;
            if (regex.test(value)) {
                return true;
            } else {
                return false;
            }
        }
 });
})(jQuery);

  上面的代码没什么要讲解的,有的话就是正则表达式了,像比较常用的表达式,网上随处可见,开始时拷贝,可以理解,然而,还是要了解熟悉一下正则表达式,不至于一段密密麻麻的字符串,你不认识它,它更不认识你。程序猿本就寂寞,那就互相认识,权当排遣寂寞吧。

正则表达式不是几句话就讲完的,网上or书本上对应知识还是要了解下,我建议的一本书是,《javascript高级编程》还是可以看下的。

下面就把常用的一些正则表达式贴出来;晒晒,阴雨连绵,小心搁置发霉。

 //扩展jQuery类本身,为类添加新方法(不需要实例化jQuery对象就可以执行)
    $.extend({
        isMobile: function (value) {
            var tmp = /^1[3-9]\d{9}$/;
            var flag = tmp.test(value);
            if (!flag) {
                return false;
            } else {
                return true;
            }
        },
        isUri: function (value) {
            var myreg = /((http|ftp|https|file):\/\/([\w\-]+\.)+[\w\-]+(\/[\w\u4e00-\u9fa5\-\.\/?\@\%\!\&=\+\~\:\#\;\,]*)?)/;
            if (myreg.test(value)) {
                return true;
            }
            else {
                return false;
            }
        },
        isEmail: function (value) {
            var myreg = /^([a-zA-Z0-9]+[_|\_|\.]?)*[a-zA-Z0-9]+@([a-zA-Z0-9]+[_|\_|\.]?)*[a-zA-Z0-9]+\.[a-zA-Z]{2,3}$/;
            if (myreg.test(value)) {
                return true;
            }
            else {
                return false;
            }
        },
        isNumber: function (value) {
            //验证以为数字0-9之间
            var _checkStr = /^[0-9]$/;
            if (!_checkStr.test(value)) {
                return false;
            }
            else {
                return true;
            }
        },
        isInteger: function (value) {
            //验证是否是整数
            var regex = /^[-+]?\d*$/;
            if (regex.test(value)) {
                return true;
            } else {
                return false;
            }
        },
        isDouble: function (value) {
            var regex = /^[-\+]?\d+(\.\d+)?$/;
            if (regex.test(value)) {
                return true;
            } else {
                return false;
            }
        },
        isTime: function (value) {
            //验证时间格式:10:10:00 也可以是时:分格式
            var time = /^((2[0-3]|\d|[0-1]\d)\:[0-5][0-9])(\:[0-5][0-9])?$/;
            if (time.test(value)) {
                return true;
            } else {
                return false;
            }
        },
        isDate: function (value) {
            //验证日期:2013-01-09 or 2013/2/2(月和日可以是一位和两位数字)
            var regex = /^\d{1,4}(\-|\/)((0?\d)|10|11|12)(\-|\/)(([1-2]\d|30|31)|(0?\d))$/;
            if (regex.test(value)) {
                return true;
            } else {
                return false;
            }
        },
        isDateTime: function (value) {
            //验证日期时间:2013-9-9 10:00:00
            var regex = /^\d{1,4}(\-|\/)((0?\d)|10|11|12)(\-|\/)(([1-2]\d|30|31)|(0?\d)) ((2[0-3]|\d|[0-1]\d)\:[0-5][0-9])(\:[0-5][0-9])?$/;
            if (regex.test(value)) {
                return true;
            } else {
                return false;
            }
        },
        isZIP: function (value) {
            //邮编6为数字
            var regex = /^\d{6}$/;
            if (regex.test(value)) {
                return true;
            } else {
                return false;
            }
        },
        isCard: function (value) {
            //验证身份证号
            var regex = /^\d{15}(\d{2}[A-Za-z0-9])?$/
            if (regex.test(value)) {
                return true;
            } else {
                return false;
            }
        },
        checkPassWordLen: function (value) {
            var regex = /^[a-zA-Z0-9]{6-20}$/; //验证密码,字符串数字,长度6-20位
            if (regex.test(value)) {
                return true;
            } else {
                return false;
            }
        },
        isIP4: function (value) {
            //ip地址
            var regex = /^(25[0-5]|2[0-4]\\d|[0-1]\\d{2}|[1-9]?\\d)\\.(25[0-5]|2[0-4]\\d|[0-1]\\d{2}|[1-9]?\\d)\\.(25[0-5]|2[0-4]\\d|[0-1]\\d{2}|[1-9]?\\d)\\.(25[0-5]|2[0-4]\\d|[0-1]\\d{2}|[1-9]?\\d)$/;
            if (regex.test(value)) {
                return true;
            } else {
                return false;
            }
        },
        isTel: function (value) {
            var regex = /^(([0\\+]\\d{2,3}-)?(0\\d{2,3})-)?(\\d{7,8})(-(\\d{3,}))?$/; //电话号码的函数(包括验证国内区号,国际区号,分机号)
            if (regex.test(value)) {
                return true;
            } else {
                return false;
            }
        },
        isPicture: function (value) {
            var regex = /(.*)\\.(jpg|bmp|gif|ico|pcx|jpeg|tif|png|raw|tga)$/; //图片
            if (regex.test(value)) {
                return true;
            } else {
                return false;
            }
        },
        isLetter: function (value) {
            var regex = /^[a-zA-Z]+$/; //字母
            if (regex.test(value)) {
                return true;
            } else {
                return false;
            }
        },
        isUpperLetter: function (value) {
            var regex = /^[A-Z]+$/;
            if (regex.test(value)) {
                return true;
            } else {
                return false;
            }
        },
        isLowerLetter: function (value) {
            var regex = /^[a-z]+$/;
            if (regex.test(value)) {
                return true;
            } else {
                return false;
            }
        },
        isQQ: function (value) {
            var regex = /^[1-9]*[1-9][0-9]*$/; //QQ号码
            if (regex.test(value)) {
                return true;
            } else {
                return false;
            }
        },
        isRar: function (value) {
            var regex = /(.*)\\.(rar|zip|7zip|tgz)$/; //压缩文件
            if (regex.test(value)) {
                return true;
            } else {
                return false;
            }
        },
        isChinese: function (value) {
            var regex = /^[\u0391-\uFFE5]+$/; //仅中文
            if (regex.test(value)) {
                return true;
            } else {
                return false;
            }
        }
    });

  废话在最后:这一篇没什么内容,只是贴下比较常用的验证(网上随处都是,在这里只是多一个可以摘抄的地方);写第一篇的时候想着这一篇多写点,把想而不敢、没说的废话全说出来,写下来,这才发现所谓的那些废话原来也是需要沉淀的,自己原来孤陋寡闻,知识匮乏。

  看样需要多读点书了,好吧,逛当当去了!!!(咱是行动派)

jQuery编写插件--封装全局函数的插件(一些常用的js验证表达式)的更多相关文章

  1. JQuery编写自己的插件(七)

    一:jQuery插件的编写基础1.插件的种类编写插件的目的是给一系列已经方法或函数做一个封装,以便在其他地方重复使用,方便后期维护和提高开发效率.常见的种类有以下三种:封装对象方法的插件

  2. 在vue项目中 如何定义全局变量 全局函数

    如题,在项目中,经常有些函数和变量是需要复用,比如说网站服务器地址,从后台拿到的:用户的登录token,用户的地址信息等,这时候就需要设置一波全局变量和全局函数 定义全局变量 原理: 设置一个专用的的 ...

  3. 在 Vuejs 项目中如何定义全局变量 全局函数

    在 Vuejs 项目中如何定义全局变量 全局函数 在项目中,经常有些函数和变量是需要复用,比如说网站服务器地址,从后台拿到的:用户的登录 token, 用户的地址信息等,这时候就需要设置一波全局变量和 ...

  4. 全局变量 全局函数vue 方法

    定义全局变量 原理: 设置一个专用的的全局变量模块文件,模块里面定义一些变量初始状态,用export default 暴露出去,在main.js里面使用Vue.prototype挂载到vue实例上面或 ...

  5. vue 定义全局函数和变量

    背景 最近我在整一个网站,介绍一些有意思的网站和实用工具的网站并且把他们收集起来,网站刚建有些不成熟希望给点意见 我用的是前端框架的vue, 但是我没有打包,直接甩到服务器上了, 不想扯了, 步骤 1 ...

  6. js的全局函数

    JS的全局函数,全局函数和window对象的函数不一样. 全局函数不属于任何一个内置对象. JS包含以下7个全局函数,用于一些常用的功能: escape(),unescape(); //编码,解码. ...

  7. js全局函数

    http://www.w3cschool.cc/jsref/jsref-obj-global.html 以前没搞懂JS的全局函数,全局函数和window对象的函数不一样.全局函数不属于任何一个内置对象 ...

  8. js中的全局函数

    以前没搞懂JS的全局函数,全局函数和window对象的函数不一样.全局函数不属于任何一个内置对象. JS包含以下7个全局函数,用于一些常用的功能:escape(),eval(),isNan(),isF ...

  9. 分享我常用的一些JS验证和函数

    下面是我常用一些JS验证和函数,有一些验证我直接写到了对象的属性里面了,可以直接通过对象.方法来调用//浮点数除法运算 function fdiv(a, b, n) { if (n == undefi ...

随机推荐

  1. [Effective C++ --023]宁以non-member、non-friend替换member函数

    作者在这一节中花了大幅度的篇幅来介绍为什么最好使用non-member.non-friend函数. 思路如下: 场景:如果有一个class用来表示网页浏览器,那么清楚缓存及历史记录的时候,我们可能定义 ...

  2. [Effective C++ --010]令赋值操作符返回一个reference to *this

    差不多最经典的就是这个了: x = y = z = ; 解读为: x = (y = ( z = )); 如果没有返回值,上述代码就不能通过编译. 其实看到标题就差不多明白这一条了,但是为什么连续赋值时 ...

  3. PAT 1006

    1006. Sign In and Sign Out (25) At the beginning of every day, the first person who signs in the com ...

  4. Sync FrameWork 文件同步 (源码)

    Sync Framework 是一个功能完善的同步平台,实现了应用程序.服务和设备的协作和脱机访问.Sync Framework 提供了一些可支持在脱机状态下漫游.共享数据和获取数据的技术 和工具.通 ...

  5. unix 网路编程(卷一)第一个程序编译过程

    unix卷一去年暑假买的到现在才开始看无比惭愧,而且惭愧第一个程序就断断续续弄了几天,要好好写程序了,马上要找工作了,下面介绍下把本书第一个程序跑起来的过程: 搜各种博客 我用系统的是ubuntu 1 ...

  6. UITableView优化那点事

    forkingdog关于UITableView优化的框架其实已经能够应用在一般的场景,且有蛮多的知识点供我们借鉴,借此站在巨人的肩膀上来分析一把. 至于UITableView的瓶颈在哪里,我相信网上随 ...

  7. c/c++中动态内存分配处理字符串的细节问题

    #include <stdio.h> #include <stdlib.h> #include <string.h> #include <malloc.h&g ...

  8. iOS的崩溃和编译错误

    1. Command /bin/sh failed with exit code 127 这是因为mogenerator找不到路径,stackoverflow给出的答案是: If /usr/local ...

  9. Disruptor框架

    http://developer.51cto.com/art/201306/399370.htm

  10. monkey检测内存泄漏

    monkey中检查内存泄漏,实际上是对一个操作多次操作后看内存情况,内存泄漏具体的原理可百度,现在我们梳理检测内存泄漏的方法: 测试前你需要安装: 1.MAT分析工具 2.使用工具事实监控内存指标,现 ...