判断http或者https

  1. var http = 'https:' == document.location.protocol ? false : true;

js的类型检测方式

  1. /**
    *
    * js的类型检测方式->typeof、constuctor。
    * 推荐通过构造函数来检测变量的类型。
    */
    var obj = {key:'value'},
    arr = ["hello","javascript"],
    fn = function(){},
    str = "hello js",
    num = 55,
    bool = true,
    User = function(){},
    user = new User();
    /*typeof测试*/
    console.log(typeof obj); //obj
    console.log(typeof arr); //obj
    console.log(typeof fn); //function
    console.log(typeof str); //string
    console.log(typeof num); //number
    console.log(typeof bool); //boolean
    console.log(typeof user); //object
    /*constructor测试*/
    console.log(obj.constructor == Object); //true
    console.log(arr.constructor == Array); //true
    console.log(str.constructor == String); //true
    console.log(num.constructor == Number); //true
    console.log(bool.constructor == Boolean);//true
    console.log(user.constructor == User); //true

单词首字母大写

  1. /**
    *
    * 将单个字符串的首字母大写
    */
    var fistLetterUpper = function(str) {
    return str.charAt(0).toUpperCase()+str.slice(1);
    };
    console.log(fistLetterUpper('hello')); //Hello
    console.log(fistLetterUpper('good')); //Good
  2.  
  3. /**
    *
    * @descrition:判断是否是合理的IP地址
    * @param:str->待验证的IP地址
    * @return :true合理的IP地址
    *
    */
    var isIP = function (str) {
    var pattern = /^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/;
  4.  
  5. return pattern.test(str);
    }

URL参数验证

  1. /**
    * @descrition:判断输入的参数是否是个合格的URL,由于url的灵活性和多样性,一下代码并不能测试所有的url都是合法的(PS:该正则无法通配所有的URL,请慎用)
    * @param:str->待判断的url参数
    * @return :true表示符合改正则。
    **/
    var isURL = function (str) {
    var strRegex = "^((https|http|ftp|rtsp|mms)?://)"
    + "?(([0-9a-z_!~*'().&=+$%-]+: )?[0-9a-z_!~*'().&=+$%-]+@)?" //ftp的user@
    + "(([0-9]{1,3}.){3}[0-9]{1,3}" // IP形式的URL- 199.194.52.184
    + "|" // 允许IP和DOMAIN(域名)
    + "([0-9a-z_!~*'()-]+.)*" // 域名- www.
    + "([0-9a-z][0-9a-z-]{0,61})?[0-9a-z]." // 二级域名
    + "[a-z]{2,6})" // first level domain- .com or .museum
    + "(:[0-9]{1,4})?" // 端口- :80
    + "((/?)|"
    + "(/[0-9a-z_!~*'().;?:@&=+$,%#-]+)+/?)$";
    var re = new RegExp(strRegex);
  2.  
  3. return re.test(str);
    }

邮编地址验证

  1. /**
    *
    * @descrition:判断输入的参数是否是国内合法的邮编地址(ps:国内不包含国外的邮编)
    * @link: http://www.youbianku.com/%E9%A6%96%E9%A1%B5
    * @param: str为待验证的邮编号码
    * @return: true表示为合法的邮编号码
    *
    */
    var isPostcode = function(str) {
    //国内邮编以0-8开头的6为数字
    var pattern = /^[0-8]\d{5}$/;
    return pattern.test(str);
  2.  
  3. }

QQ号码验证

  1. /**
    *
    * @descrition:判断输入的参数是否是个合格的QQ号码
    * @param->str:待验证的参数
    * @return: true验证成功
    */
    var isQQ = function(str) {
    /**
    *@descrition:规则
    * 1-9开头,最少5位。
    */
    var pattern = /^[1-9][0-9]{4,}$/
    return pattern.test(str);
    }

手机号码验证

  1. /**
    *
    * @descrition:判断输入的参数是否是个合格的手机号码,不能判断号码的有效性,有效性可以通过运营商确定。
    * @param:str ->待判断的手机号码
    * @return: true表示合格输入参数
    *
    */
    var isCellphone = function(str) {
    /**
    *@descrition:手机号码段规则
    * 13段:130、131、132、133、134、135、136、137、138、139
    * 14段:145、147
    * 15段:150、151、152、153、155、156、157、158、159
    * 17段:170、176、177、178
    * 18段:180、181、182、183、184、185、186、187、188、189
    *
    */
    var pattern = /^(13[0-9]|14[57]|15[012356789]|17[0678]|18[0-9])\d{8}$/;
    return pattern.test(str);
    }

固定电话号码验证

  1. /**
    * @descrition:判断输入的参数是否是个合格的固定电话号码。
    * @param:str->待验证的固定电话号码。
    * @return : true表示验证合格。
    *
    **/
    var isfixedphone = function(str) {
    /**
    *
    * @desctition:规则->区号3-4位,号码7-8位,可以有分机号,分机号为3-4为,格式如下:"0775-85333333-123"
    *
    */
    var pattern = /^\d{3,4}-\d{7,8}(-\d{3,4})?$/;
    return pattern.test(str);
    }

标准的邮箱验证

  1. /**
    *
    * @descrition:判断输入的参数是否是个合格标准的邮箱,并不能判断是否有效,有效只能通过邮箱提供商确定。
    * @param:str ->待验证的参数。
    * @return -> true表示合格的邮箱。
    *
    */
    var isEmail = function(str){
    /**
    * @descrition:邮箱规则
    * 1.邮箱以a-z、A-Z、0-9开头,最小长度为1.
    * 2.如果左侧部分包含-、_、.则这些特殊符号的前面必须包一位数字或字母。
    * 3.@符号是必填项
    * 4.右则部分可分为两部分,第一部分为邮件提供商域名地址,第二部分为域名后缀,现已知的最短为2位。最长的为6为。
    * 5.邮件提供商域可以包含特殊字符-、_、.
    */
    var pattern = /^([a-zA-Z0-9]+[-_.]?)*[a-zA-Z0-9]+@([a-zA-Z0-9]+[-_.]?)*[a-zA-Z0-9]+\.[a-zA-Z]{2,6}$/;
    return pattern.test(str);
    }

判断传入的参数的长度是否在给定的有效范围内

  1. /**
    *
    * @description: 判断传入的参数的长度是否在给定的有效范围内
    * @param: minL->给定的最小的长度
    * @param: maxL->给定的最大的长度
    * @param: str->待验证的参数
    * @return : true表示合理,验证通过
    *
    */
    var isAvaiableLength = function(minL,maxL,str){
    return (str.length >= minL && str.length <= maxL) ? true : false;
    }

判断输入的参数是否为空

  1. /**
    *
    * @Dependence : https://gist.github.com/hehongwei44/3e167cfcda47d4c8051a#file-extendstringprototype-js
    * @description : 判断输入的参数是否为空
    * @return : true表示为输入参数为空
    *
    */
    var isEmpty = function (str) {
    //空引用 空字符串 空输入
    return str == null || typeof str == "undefined" || str.trim() == "" ? true : false;
    }

测试给定的参数是否全部为中文字符

  1. /**
    *
    * @descrition: 测试给定的参数是否全部为中文字符,如"中test"不会通过 。
    * @param->str : 传入的参数,类型为字符串。
    * @return : true表示全部为中文,false为不全是中文,或没有中文。
    *
    */
    var isChinese = function (str) {
    var pattern = /^[\u0391-\uFFE5]+$/g;
    return pattern.test(str);
    }

数字类型验证

  1. /**
    *
    * @descrition : 该函数的功能是判断转入的参数是否为数字类型。
    * @param->o : 传入的参数,参数可以为任何类型。
    * @return: true表示为数字,false为非数字
    *
    */
    var isNumber = function(o) {
    return !isNaN(o);
    }

对String类型去除空格的拓展

  1. /**
    *
    * @desccrition: 对String类型去除空格的拓展
    * @dir : 被去除空格所在的位置
    * @test: ie6-9 chrome firefox
    */
    String.prototype.trim = function(dir){
    switch (dir) {
    case 0 : //去左边的空格
    return this.replace(/(^\s*)/g,'');
    break;
    case 1 : //去右边的空格
    return this.replace(/(\s*$)/g,'');
    break;
    case 2 : //去掉所有的空格
    return this.replace(/(\s*)/g,'');
    break;
    default : //去掉两边的空格
    return this.replace(/(^\s*)|(\s*$)/g,'');
    }
    }

对字符串进行截取,包括普通字符和中文字符

  1. /**
    *
    * @descrition: 对字符串进行截取,包括普通字符和中文字符
    * @param : str ->待截取的字符串
    * @param : len ->要截取的长度
    *
    * 比如cutstr('hello',2)->he... cutstr("您好呀",4)->您好...
    * 优先选择后台进行字符串截取,后css截取,最后js截取
    */
    var cutstr = function(str, len) {
    var temp,
    icount = 0,
    patrn = /[^\x00-\xff]/g, //中文字符匹配
    strre = "";
  2.  
  3. for (var k = 0; k < str.length; k++) {
    if (icount < len ) {
    temp = str.substr(k, 1);
    if (temp.match(patrn) == null) {
    icount = icount + 1;
    } else {
    icount = icount + 2;
    }
    strre += temp;
    } else {
    break
    }
    }
    return strre + "...";
    }

生成随机的字符串

  1. /**
    * @function:generateRandomAlphaNum->生成随机的字符串
    * @param:len->生存随机字符串的长度
    * @tdd->IE6-9 chrome Firefox通过测试
    *
    */
    function generateRandomAlphaNum(len) {
    var rdmString = "";
    //toSting接受的参数表示进制,默认为10进制。36进制为0-9 a-z
    for (; rdmString.length < len; rdmString += Math.random().toString(36).substr(2));
    return rdmString.substr(0, len);
    }

通过a标签解析url标签

  1. /*
    * @function: 通过a标签解析url标签
    * @param:url url参数是字符串,解析的目标
    通过IE6-9 chrome Firefox测试
    *
    */
    function parseURL(url) {
    //创建一个a标签
    var a = document.createElement('a');
    //将url赋值给标签的href属性。
    a.href = url;
    return {
    source: url,
    protocol: a.protocol.replace(':',''), //协议
    host: a.hostname, //主机名称
    port: a.port, //端口
    query: a.search, //查询字符串
    params: (function(){ //查询参数
    var ret = {},
    seg = a.search.replace(/^\?/,'').split('&'),
    len = seg.length, i = 0, s;
    for (;i<len;i++) {
    if (!seg[i]) { continue; }
    s = seg[i].split('=');
    ret[s[0]] = s[1];
    }
    return ret;
    })(),
    file: (a.pathname.match(/\/([^\/?#]+)$/i) || [,''])[1], //文件名
    hash: a.hash.replace('#',''), //哈希参数
    path: a.pathname.replace(/^([^\/])/,'/$1'), //路径
    relative: (a.href.match(/tps?:\/\/[^\/]+(.+)/) || [,''])[1], //相对路径
    segments: a.pathname.replace(/^\//,'').split('/') //路径片段
    };
    }

身份证号码验证

  1. /**
    *
    * @descrition: 判断输入的参数是否是一个合格的身份证号码。这个函数对输入的参数检查时候是合格的身份证号码,其身份证有效性无法判断。检测的颗粒度可以定制。
    * @param->str : 待验证的参数
    * @return : true是合格的身份证 false为不合法的身份证
    *
    */
    var checkIdCard = function (num) {
    num = num.toUpperCase();
  2.  
  3. var cityCode = {11: "北京", 12: "天津", 13: "河北", 14: "山西", 15: "内蒙古", 21: "辽宁", 22: "吉林", 23: "黑龙江 ", 31: "上海", 32: "江苏", 33: "浙江", 34: "安徽", 35: "福建", 36: "江西", 37: "山东", 41: "河南", 42: "湖北 ", 43: "湖南", 44: "广东", 45: "广西", 46: "海南", 50: "重庆", 51: "四川", 52: "贵州", 53: "云南", 54: "西藏 ", 61: "陕西", 62: "甘肃", 63: "青海", 64: "宁夏", 65: "新疆", 71: "台湾", 81: "香港", 82: "澳门", 91: "国外 "};
  4.  
  5. if(!cityCode[num.substr(0,2)]){
    alert("地址编码错误");
    return false;
    }
    //身份证号码为15位或者18位,15位时全为数字,18位前17位为数字,最后一位是校验位,可能为数字或字符X。
    if (!(/(^\d{15}$)|(^\d{17}([0-9]|X)$)/.test(num))) {
    //alert('输入的身份证号长度不对,或者号码不符合规定!\n15位号码应全为数字,18位号码末位可以为数字或X。');
    return false;
    }
    //校验位按照ISO 7064:1983.MOD 11-2的规定生成,X可以认为是数字10。
    //下面分别分析出生日期和校验位
    var len, re;
    len = num.length;
    if (len == 15) {
    re = new RegExp(/^(\d{6})(\d{2})(\d{2})(\d{2})(\d{3})$/);
    var arrSplit = num.match(re);
  6.  
  7. //检查生日日期是否正确
    var dtmBirth = new Date('19' + arrSplit[2] + '/' + arrSplit[3] + '/' + arrSplit[4]);
    var bGoodDay;
    bGoodDay = (dtmBirth.getYear() == Number(arrSplit[2])) && ((dtmBirth.getMonth() + 1) == Number(arrSplit[3])) && (dtmBirth.getDate() == Number(arrSplit[4]));
    if (!bGoodDay) {
    //alert('输入的身份证号里出生日期不对!');
    return false;
    }
    else {
    //将15位身份证转成18位
    //校验位按照ISO 7064:1983.MOD 11-2的规定生成,X可以认为是数字10。
    var arrInt = new Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2);
    var arrCh = new Array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2');
    var nTemp = 0, k;
    num = num.substr(0, 6) + '19' + num.substr(6, num.length - 6);
    for (k = 0; k < 17; k++) {
    nTemp += num.substr(k, 1) * arrInt[k];
    }
    num += arrCh[nTemp % 11];
    return true;
    }
    }
    if (len == 18) {
    re = new RegExp(/^(\d{6})(\d{4})(\d{2})(\d{2})(\d{3})([0-9]|X)$/);
    var arrSplit = num.match(re);
  8.  
  9. //检查生日日期是否正确
    var dtmBirth = new Date(arrSplit[2] + "/" + arrSplit[3] + "/" + arrSplit[4]);
    var bGoodDay;
    bGoodDay = (dtmBirth.getFullYear() == Number(arrSplit[2])) && ((dtmBirth.getMonth() + 1) == Number(arrSplit[3])) && (dtmBirth.getDate() == Number(arrSplit[4]));
    if (!bGoodDay) {
    //alert(dtmBirth.getYear());
    //alert(arrSplit[2]);
    //alert('输入的身份证号里出生日期不对!');
    return false;
    }
    else {
    //检验18位身份证的校验码是否正确。
    //校验位按照ISO 7064:1983.MOD 11-2的规定生成,X可以认为是数字10。
    var valnum;
    var arrInt = new Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2);
    var arrCh = new Array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2');
    var nTemp = 0, k;
    for (k = 0; k < 17; k++) {
    nTemp += num.substr(k, 1) * arrInt[k];
    }
    valnum = arrCh[nTemp % 11];
    if (valnum != num.substr(17, 1)) {
    //alert('18位身份证的校验码不正确!应该为:' + valnum);
    return false;
    }
    return true;
    }
    }
    return false;
    }

2015-03-22ShareComments

js 各种常用js验证的更多相关文章

  1. JS的常用正则表达式 验证密码(转载自用)

    JS的正则表达式 强:字母+数字+特殊字符   ^(?![a-zA-z]+$)(?!\d+$)(?![!@#$%^&*]+$)(?![a-zA-z\d]+$)(?![a-zA-z!@#$%^& ...

  2. JS的常用正则表达式 验证密码用户名等

    //校验是否全由数字组成 function isDigit(s) { var patrn=/^[0-9]{1,20}$/; if (!patrn.exec(s)) return false retur ...

  3. ★★★【卡法 常用js库】: js汇合 表单验证 cookie设置 日期格式 电话手机号码 email 整数 小数 金额 检查参数长度

    [卡法 常用js库]: js汇合 表单验证  cookie设置  日期格式  电话手机号码  email  整数  小数  金额   检查参数长度 // +---------------------- ...

  4. 常用JS正则表达式

    常用JS正则表达式 收集一些常用的JavaScript正则表达式匹配规则,比如匹配电话号码.Email.中文字符.身份证号.邮编.QQ号.过滤空白行.匹配特定数字等.觉得这玩意是很有用的,只不过自己水 ...

  5. api日常总结:前端常用js函数和CSS常用技巧

    我的移动端media html{font-size:10px} @media screen and (min-width:321px) and (max-width:375px){html{font- ...

  6. 1.Vue.js的常用指令

      Vue.js介绍 Vue.js是当下很火的一个JavaScript MVVM库,它是以数据驱动和组件化的思想构建的.相比于Angular.js,Vue.js提供了更加简洁.更易于理解的API,使得 ...

  7. JS中常用开发知识点

     JS中常用开发知识点 1.获取指定范围内的随机数 2.随机获取数组中的元素 3.生成从0到指定值的数字数组 等同于: 4.打乱数字数组的顺序 5.对象转换为数组 //注意对象必须是以下格式的才可以通 ...

  8. 常用 JS 函数

    各种业务开发都离不开对数据的处理,然而遇到的很多数据都是不好处理的.这个时候就需要寻求搜索引擎的帮助.这种方法效率是非常低下的,而且根据作者的个性不能保证其对自己的口味.因此这篇文字包含了一份 JS ...

  9. 常用js方法

    function dateGetter(name, size, offset, trim) { offset = offset || 0; return function (date) { var v ...

随机推荐

  1. 19个心得 明明白白说Linux下的负载均衡

    [51CTO.com独家特稿]前言:作为一名Linux/unix系统工程师,这几年一直在涉及到对外项目,经手过许多小中型网站的架构,F5.LVS及Nginx接触的都比较多,我想一种比较通俗易懂的语气跟 ...

  2. Nginx运行Laravel的配置

    修改nginx.conf.修改前记得备份一下,万一改错了还能还原回去. server { listen 80; server_name localhost; set $root_path '/usr/ ...

  3. C/C++时间函数的使用

    来源:http://blog.csdn.net/apull/article/details/5379819 一.获取日历时间time_t是定义在time.h中的一个类型,表示一个日历时间,也就是从19 ...

  4. sql查询百分号的方法

    select * from [tablename] where [col] like '%100/%%' escape '/'

  5. 软件设计模式详解:OCP原则

    看到两篇关于OCP的文章, 纳之. 原文:  http://www.cnblogs.com/muzongyan/archive/2010/08/05/1793454.html http://blog. ...

  6. Polycarp's problems

    Polycarp's problems time limit per test 2 seconds memory limit per test 256 megabytes input standard ...

  7. OpenGL---------BMP文件格式

    计算机保存图象的方法通常有两种:一是“矢量图”,一是“像素图”.矢量图保存了图象中每一几何物体的位置.形状.大小等信息,在显示图象时,根据这些信息计算得到完整的图象.“像素图”是将完整的图象纵横分为若 ...

  8. 学习笔记——门面模式Facade

    门面模式,其实在我们不经意间已经使用了此设计模式.当我们需要将两个子系统,合并对外提供一个大的接口时,我们使用的就是门面模式.对外,子系统的接口是不可见的,只有我们的门面在.

  9. apache.commoms.digester3 解析xml文件

    Technorati 标签: java,xml,digester,xmlrule,FromXmlRulesModule 1 简介 java解析xml,就个人所知有3种方法DOM.SAX和Digeste ...

  10. PAT (Advanced Level) 1103. Integer Factorization (30)

    暴力搜索. #include<cstdio> #include<cstring> #include<cmath> #include<vector> #i ...