`
wangzi6hao
  • 浏览: 213803 次
  • 性别: Icon_minigender_1
  • 来自: sdf
社区版块
存档分类
最新评论

javascript合法验证 js数据验证、js email验证、js url验证、js长度验证、js数字验证等(弹出对话框形式)

阅读更多

2008-11-07 02:51

/**
* 得到中英文字符长
* @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;
    }
}
 
分享到:
评论

相关推荐

    Python项目-自动办公-56 Word_docx_格式套用.zip

    Python课程设计,含有代码注释,新手也可看懂。毕业设计、期末大作业、课程设计、高分必看,下载下来,简单部署,就可以使用。 包含:项目源码、数据库脚本、软件工具等,该项目可以作为毕设、课程设计使用,前后端代码都在里面。 该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值。

    《松鼠》生态性课堂体验教案.docx

    《松鼠》生态性课堂体验教案

    Java系统源码+智慧图书管理系统

    Java系统源码+智慧图书管理系统 内容概要: 本资源包含了完整的Java前后端源码及说明文档,适用于想要快速搭建并部署Java Web应用程序的开发者、学习者。 技术栈: 后端:Java生态系统,包含Spring Boot、Shiro、MyBatis等,数据库使用Mysql 前端:Vue、Bootstrap、Jquery等 适用场景示例: 1、毕业生希望快速启动一个新的Java Web应用程序。 2、团队寻找一个稳定的模板来加速产品开发周期。 3、教育机构或个人学习者用于教学目的或自学练习。 4、创业公司需要一个可以立即投入使用的MVP(最小可行产品)。

    基于ssm+jsp实现的超市管理系统高级版v2-lw.zip

    项目包含前后台完整源码。 项目都经过严格调试,确保可以运行! 具体项目介绍可查看博主文章或私聊获取 助力学习实践,提升编程技能,快来获取这份宝贵的资源吧!

    《松鼠》教学方案.docx

    《松鼠》教学方案

    基于ssm的计算机课程实验管理系统源代码(完整前后端+mysql+说明文档+LW).zip

    学生角色 学生用户在系统的前台界面可以浏览站内新闻、系统公告等公共的信息,在进行了注册和登录等操作后可以进入个人后台管理界面,对自己的个人信息进行管理,还可以进行实验成绩查看和实验交流等操作。 教师角色 教师用户也可以正常使用本系统的前台功能,但最主要的功能还是在个人后台界面中。在教师的个人后台界面中,首先教师可以管理自己的个人信息,还可以对学生进行实验任务书下达,对学生的实验成果和实验成绩管理等操作。 管理员角色 系统管理员可以管理整个系统的数据,比如可以管理教师和学生的个人资料,对违反了网站及学校实验室规定的同学可以进行删除。除了管理教师和学生的信息外,管理员用户还可以对公告信息及新闻信息等进行管理。 环境说明: 开发语言:Java 框架:ssm,mybatis JDK版本:JDK1.8 数据库:mysql 5.7 数据库工具:Navicat11 开发软件:eclipse/idea Maven包:Maven3.3 服务器:tomcat7

    毕业设计-0-1背包问题动态规划模型Python代码.rar

    1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、本项目仅用作交流学习参考,请切勿用于商业用途。

    基于ssm的大创项目申报管理系统源代码(完整前后端+mysql+说明文档+LW).zip

    管理员 管理员管理 工作人员管理 用户管理 公告信息管理 往届项目管理 工作人员 个人资料修改 公告查看 项目申报信息管理,发布(项目申报信息、要求、时间节点等信息) 项目模板管理 往届项目查询 用户 个人资料修改 公告查看 项目模板下载 项目申报信息查看 我的项目申报 项目申报结果查看 环境说明: 开发语言:Java 框架:ssm,mybatis JDK版本:JDK1.8 数据库:mysql 5.7 数据库工具:Navicat11 开发软件:eclipse/idea Maven包:Maven3.3 服务器:tomcat7

    福禄寿FloruitShow - 多一个世界 [mqms].ogg

    福禄寿FloruitShow - 多一个世界 [mqms].ogg

    Python项目-自动办公-45 excel处理实例(一维转二维).zip

    Python课程设计,含有代码注释,新手也可看懂。毕业设计、期末大作业、课程设计、高分必看,下载下来,简单部署,就可以使用。 包含:项目源码、数据库脚本、软件工具等,该项目可以作为毕设、课程设计使用,前后端代码都在里面。 该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值。

    商业企业资本结构与公司价值关系研究 开题报告.docx

    商业企业资本结构与公司价值关系研究 开题报告.docx

    间位芳纶纸全球市场研究报告:2023年市场规模达到约6.31亿美元

    间位芳纶纸全球市场研究报告:2023年市场规模达到约6.31亿美元 在特种纸材料领域,间位芳纶纸以其高强度、耐高温、耐腐蚀、本质阻燃和卓越的电绝缘性能,成为了现代工业不可或缺的关键材料。从电气绝缘到蜂窝结构材料,再到民间用品,间位芳纶纸的广泛应用不仅推动了多个行业的进步,更展现了其巨大的市场潜力。然而。本文将深入探讨间位芳纶纸市场的现状、技术创新、应用领域、竞争格局及未来趋势,并强调用户咨询在引领市场发展中的关键作用。 市场概况 据QYR最新调研,2023年全球间位芳纶纸市场规模达到约6.31亿美元,同比增长12.88%。这一增长主要得益于电气绝缘领域和蜂窝芯材领域的强劲需求。电气绝缘领域作为间位芳纶纸的主要应用领域,2023年占比高达62.76%,而蜂窝芯材领域则紧随其后,占比34.71%。在中国市场,间位芳纶纸的发展同样令人瞩目。尽管起步较晚,但得益于技术进步和政策支持,国内间位芳纶纸市场规模持续走高,从2016年的4.8亿元增长至2023年的10亿元,期间复合年增长率为12.01%。 技术创新与趋势 技术创新是推动间位芳纶纸市场发展的核心动力。随着纳米技术、智能制造等技术的不断发

    毕业设计-BP神经网络模型Python代码.rar

    1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、本项目仅用作交流学习参考,请切勿用于商业用途。

    Python 批量转换PPT、Excel、Word为PDF文件工具

    Python 批量转换PPT、Excel、Word为PDF文件工具

    四川大学期末考试试题(开卷).pdf

    四川大学期末考试试题(开卷).pdf

    毕业设计-RBF神经网络做回归预测代码.rar

    1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、本项目仅用作交流学习参考,请切勿用于商业用途。

    springboot-基于JavaScript的在线考试系统.zip

    springboot-基于JavaScript的在线考试系统.zip

    深圳市2005-2024年近20年历史气象数据下载

    深圳市2005-2024年近20年的历史气象数据,每3小时更新一次数据,参数包含气温、气压、降水量、云层、能见度、风向、湿度等,几万条数据

    Python项目-实例-15 屏保计时器.zip

    Python课程设计,含有代码注释,新手也可看懂。毕业设计、期末大作业、课程设计、高分必看,下载下来,简单部署,就可以使用。 包含:项目源码、数据库脚本、软件工具等,该项目可以作为毕设、课程设计使用,前后端代码都在里面。 该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值。

    2024北邮数电大实验-水位检测与控制系统

    2024北邮数电大实验——实验3:水位检测与控制 全功能代码开源。本人期末复习任务繁重,代码无时间作详细注释。

Global site tag (gtag.js) - Google Analytics