javascript合法验证 js数据验证、js email验证、js url验证、js长度验证、js数字验证等

/**

* 得到中英文字符长

* @param {} str

* @return {}

*/

function LengthB(str){

    var p1 = new RegExp('%u..', 'g')

    var p2 = new RegExp('%.', 'g')

    return escape(str).replace(p1, '').replace(p2, '').length

}

/**

* 过滤所有空格字符

* @param {Object} str

*/

function jsTrim(str){

    str += "";

    while ((str.charAt(0) == ' ') || (str.charAt(0) == '???') || (escape(str.charAt(0)) == '%u3000'))

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

    while ((str.charAt(str.length - 1) == ' ') || (str.charAt(str.length - 1) == '???') || (escape(str.charAt(str.length - 1)) == '%u3000'))

        str = str.substring(0, str.length - 1);

    return str;

}

/**

* 过滤中间字符串和多个空格

* @param {Object} inputString

*/

function trim(inputString){

    if (typeof inputString != "string") {

        return inputString;

    }

    var retValue = inputString;

    var ch = retValue.substring(0, 1);

    while (ch == " ") {

        //检查字符串开始部分的空格

        retValue = retValue.substring(1, retValue.length);

        ch = retValue.substring(0, 1);

    }

    ch = retValue.substring(retValue.length - 1, retValue.length);

    while (ch == " ") {

        //检查字符串结束部分的空格

        retValue = retValue.substring(0, retValue.length - 1);

        ch = retValue.substring(retValue.length - 1, retValue.length);

    }

    while (retValue.indexOf(" ") != -1) {

        //将文字中间多个相连的空格变为一个空格

        retValue = retValue.substring(0, retValue.indexOf(" ")) + retValue.substring(retValue.indexOf(" ") + 1, retValue.length);

    }

    return retValue;

}

/**

* 过滤字符串,指定过滤内容,如果内容为空,则默认过滤 '~!@#$%^&*()-+."

* @param {Object} str

* @param {Object} filterStr

*

* @return 包含过滤内容,返回True,否则返回false;

*/

function FilterStr(str, filterStr){

    filterStr = filterStr == "" ? "'~!@#$%^&*()-+./"" : filterStr

    var ch;

    var i;

    var temp;

    var error = false;//当包含非法字符时,返回True

    for (i = 0; i <= (filterStr.length - 1); i++) {

        ch = filterStr.charAt(i);

        temp = str.indexOf(ch);

        if (temp != -1) {

            error = true;

            break;

        }

    }

    return error;

}

/**

* 过滤指定内容字符串

* @param {Object} str 检查字符串

* @param {Object} filterStr 过滤字符串,内容为空,则默认过滤 '~!@#$%^&*()-+."

* @param {Object} alertStr 弹出对话内容

* @param {Object} idStr 出错返回出错字段ID

*/

function ISFilterStr(str, filterStr, alertStr, idStr){

    alertStr = "对不起,您输入的 " + alertStr + " 不允包含 " + filterStr + " 非法字符";

    if (FilterStr(str, filterStr))

        this.AlertAndRFalse(alertStr, idStr);

}

/**

* 检查是否为网址

* @param {} str_url

* @param {} alertStr    弹出字段内容

* @param {} idStr    光标定位的字段ID<b>只能接收ID</b>

* @return {Boolean} <b>不是</b>网址返回false;

*/

function IsURL(str_url, alertStr, idStr){// 验证url

    alertStr = alertStr + " 格式不正确!";

    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

+

    "((/?)|" // a slash isn't required if there is no file name

+

    "(/[0-9a-z_!~*'().;?:@&=+$,%#-]+)+/?)$";

    var re = new RegExp(strRegex);

    if (!re.test(str_url))

        this.AlertAndRFalse(alertStr, idStr);

}

/**

* 检查是否为电子邮件

* @param {} str

* @param {} alertStr    弹出字段内容

* @param {} idStr    光标定位的字段ID<b>只能接收ID</b>

* @return {Boolean} <b>不是</b>电子邮件返回false;

*/

function IsEmail(str, alertStr, idStr){

    alertStr = alertStr + " 格式不正确!";

    var re = /^([a-zA-Z0-9]+[_|/-|/.]?)*[a-zA-Z0-9]+@([a-zA-Z0-9]+[_|/-|/.]?)*[a-zA-Z0-9]+/.[a-zA-Z]{2,3}$/;

    if (!re.test(str))

        this.AlertAndRFalse(alertStr, idStr);

}

/**

* 检查是否为数字

* @param {} str

* @param {} alertStr    弹出字段内容

* @param {} idStr    光标定位的字段ID<b>只能接收ID</b>

* @return {Boolean} <b>不是</b>数字返回false;

*/

function IsNum(str, alertStr, idStr){

    alertStr = alertStr + " 应该由数字组成!";

    var re = /^[/d]+$/

    if (!re.test(str))

        this.AlertAndRFalse(alertStr, idStr);

}

/**

* 检查数值是否在给定范围以内<br>

* @param {} str_num

* @param {} moreLen     应该大于或者等于的数值

* @param {} lessLen    应该小于或者等于的数值

* @param {} alertStr    弹出字段内容

* @param {} idStr    光标定位的字段ID<b>只能接收ID</b>

* @return {Boolean} <b>小于最小数值或者大于最大数值</b>数字返回false;

*/

function IsRangeNum(str_num, moreLen, lessLen, alertStr, idStr){

    IsNum(str_num, alertStr, idStr);

    if (moreLen != "") {

        alertStr = alertStr + " 数值不能小于 " + moreLen;

        if (str_num < moreLen)

            this.AlertAndRFalse(alertStr, idStr);

    }

    if (lessLen != "") {

        alertStr = alertStr + " 数值不能大于 " + lessLen;

        if (str_num > lessLen)

            this.AlertAndRFalse(alertStr, idStr);

    }

    if (moreLen == "" && lessLen == "")

        this.AlertAndRFalse("没有定义最大最小长度!", idStr);

}

/**

* 检查是否为合格字符串(不区分大小写)<br>

* 长度在6至20位,并且是由a-z0-9_组成的字符串

* @param {} str    检查的字符串

* @param {} alertStr    弹出字段内容

* @param {} idStr    光标定位的字段ID<b>只能接收ID</b>

* @return {Boolean} <b>不是</b>"长度在6至20位且由a-z0-9_"组成返回false;

*/

function IsLicit(str, alertStr, idStr){

    alertStr = "对不起," + alertStr + " 不能为空并且只能由 0到9 a到z 下划线 的6到20位组成! ";

    var re = /^[_0-9a-zA-Z]{6,20}$/

    if (!re.test(str))

        this.AlertAndRFalse(alertStr, idStr);

}

/**

* 检查二个字符串是否相等

* @param {} str1    第一个字符串

* @param {} str2    第二个字符串

* @param {} alertStr    弹出字段内容

* @param {} idStr    光标定位的字段ID<b>只能接收ID</b>

* @return {Boolean} 字符串不相等返回false;

*/

function IsStrEquals(str1, str2, alertStr, idStr){

    alertStr = "二次 " + alertStr + " 不一致!";

    if (str1 != str2)

        this.AlertAndRFalse(alertStr, idStr);

}

/**

* 检查字符串是否在给定长度范围以内(中文字符以2个字节计算)<br>

*

* @param {} str 检查的字符

* @param {} moreLen     应该大于或者等于的长度

* @param {} lessLen    应该小于或者等于的长度

* @param {} alertStr    弹出字段内容

* @param {} idStr    光标定位的字段ID<b>只能接收ID</b>

* @return {Boolean} <b>小于最小长度或者大于最大长度</b>数字返回false;

*/

function IsRange(str, moreLen, lessLen, alertStr, idStr){

    var strLen = LengthB(str);

    if (moreLen != "") {

        alertStr = alertStr + " 应该大于或等于 " + moreLen + " 个字节长度!";

        if (strLen < moreLen)

            this.AlertAndRFalse(alertStr, idStr);

    }

    if (lessLen != "") {

        alertStr = alertStr + " 应该小于或等于 " + lessLen + " 个字节长度!";

        if (strLen > lessLen)

            this.AlertAndRFalse(alertStr, idStr);

    }

    if (moreLen == "" && lessLen == "")

        this.AlertAndRFalse("没有定义最大最小长度!", idStr);

}

/**

* 检查字符串是否小于给定长度范围(中文字符以2个字节计算)<br>

* @param {} str    字符串

* @param {} lessLen    小于或等于长度

* @param {} alertStr    弹出字段内容

* @param {} idStr    光标定位的字段ID<b>只能接收ID</b>

* @return {Boolean} <b>大于给定长度</b>数字返回false;

*/

function IsLess(str, lessLen, alertStr, idStr){

    IsRange(str, "", lessLen, alertStr, idStr);

}

/**

* 检查字符不为空

* @param {} str

* @param {} alertStr    弹出字段内容

* @param {} idStr    光标定位的字段ID<b>只能接收ID</b>

* @return {Boolean} <b>字符为空</b>返回false;

*/

function IsEmpty(str, alertStr, idStr){

    alertStr = alertStr + " 不能为空!";

    if (str == "")

        this.AlertAndRFalse(alertStr, idStr);

}

/**

* 弹出警示框,并定位到出错字段上

* @param {} alertStr    弹出警告框内容

* @param {} idStr        返回字段焦点

* @return {Boolean}    返回false

*/

function AlertAndRFalse(alertStr, idStr){

    alert(alertStr);

    document.getElementById(idStr).focus();

    throw "valueErr";

}

// JavaScript Document

调用示例

function checkForm() {

    try {

      var    title    =    trim(document.getElementById('title'));        //文章标题


      IsEmpty(title,"文章标题","title");//不可为空

      IsLess(title,100,"文章标题","title");//标题应少于100个字符长

      ISFilterStr(title, "~`!@#$%^&*()-=_+[]{}|//;':/",./<>?", "文章标题","title")//标题不允许包含这些非法字符

    } catch(err) {

        if(err == "valueErr")

            return false;

    }

}

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,519评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,842评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,544评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,742评论 1 271
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,646评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,027评论 1 275
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,513评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,169评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,324评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,268评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,299评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,996评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,591评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,667评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,911评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,288评论 2 345
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,871评论 2 341

推荐阅读更多精彩内容