`
wangzi6hao
  • 浏览: 213823 次
  • 性别: 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;
    }
}
 
分享到:
评论

相关推荐

    Vue + Vite + iClient3D for Cesium 实现限高分析

    Vue + Vite + iClient3D for Cesium 实现限高分析

    【发文无忧】基于matlab鲸鱼算法WOA-Kmean-Transformer-GRU数据回归预测【Matlab仿真 5858期】.zip

    CSDN Matlab研究室上传的资料均有对应的仿真结果图,仿真结果图均是完整代码运行得出,完整代码亲测可用,适合小白; 1、完整的代码压缩包内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据提示修改;若不会,私信博主; 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可私信博主或扫描博客文章底部QQ名片; 4.1 博客或资源的完整代码提供 4.2 期刊或参考文献复现 4.3 Matlab程序定制 4.4 科研合作

    数据集-狗狗行为检测数据集1551张8种YOLO+VOC格式.zip

    数据集格式:VOC格式+YOLO格式 压缩包内含:3个文件夹,分别存储图片、xml、txt文件 JPEGImages文件夹中jpg图片总计:1551 Annotations文件夹中xml文件总计:1551 labels文件夹中txt文件总计:1551 标签种类数:8 标签名称:["bark","default","eat","lyingDown","lyingProne","sit","sleep","stand"] 每个标签的框数: bark 框数 = 168 default 框数 = 211 eat 框数 = 208 lyingDown 框数 = 240 lyingProne 框数 = 148 sit 框数 = 154 sleep 框数 = 253 stand 框数 = 231 总框数:1613 图片清晰度(分辨率:像素):清晰 图片是否增强:否 标签形状:矩形框,用于目标检测识别 重要说明:暂无 特别声明:本数据集不对训练的模型或者权重文件精度作任何保证,数据集只提供准确且合理标注

    Arista Networks:Arista 7000系列交换机操作与维护.docx

    Arista Networks:Arista 7000系列交换机操作与维护.docx

    【BP回归预测】基于matlab飞蛾扑火算法优化BP神经网络MFO-BP光伏数据预测(多输入单输出)【Matlab仿真 5151期】.zip

    CSDN Matlab研究室上传的资料均有对应的仿真结果图,仿真结果图均是完整代码运行得出,完整代码亲测可用,适合小白; 1、完整的代码压缩包内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据提示修改;若不会,私信博主; 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可私信博主或扫描博客文章底部QQ名片; 4.1 博客或资源的完整代码提供 4.2 期刊或参考文献复现 4.3 Matlab程序定制 4.4 科研合作

    CentOS7升级openssh9.9最新生产可用shell自动升级

    CentOS7升级openssh9.9最新生产可用shell自动升级

    深圳混泥土搅拌站环境安全管理制度.docx

    深圳混泥土搅拌站环境安全管理制度

    整体风格与设计理念 整体设计风格简约而不失优雅,采用了简洁的线条元素作为主要装饰,营造出一种现代、专业的视觉感受 配色上以柔和的色调为主,搭配少量鲜明的强调色,既保证了视觉上的舒适感,又能突出重点内容

    整体风格与设计理念 整体设计风格简约而不失优雅,采用了简洁的线条元素作为主要装饰,营造出一种现代、专业的视觉感受。配色上以柔和的色调为主,搭配少量鲜明的强调色,既保证了视觉上的舒适感,又能突出重点内容,使整个演示文稿在视觉上具有较强的吸引力和辨识度。 页面布局与内容结构 封面:封面设计简洁大方,“MORIMOTO” 和 “SENYAN” 字样增添了独特的标识性,可根据实际需求替换为汇报人姓名或公司名称等信息,让演示文稿从一开始就展现出专业与个性。 目录页:清晰列出 “工作内容回顾”“工作难点分析”“市场状况概述”“工作目标计划” 四个主要板块,方便观众快速了解演示文稿的整体架构和主要内容,为后续的详细展示做好铺垫。 工作内容回顾页(PART.01):提供了充足的空间用于详细阐述工作内容,可通过复制粘贴文本并选择只保留文字的方式,方便快捷地填充内容,建议使用微软雅黑字体以保证整体风格的一致性。无论是列举日常工作任务、项目执行细节还是工作成果总结,都能清晰呈现,让观众对工作内容有全面而深入的了解。 工作难点分析页(PART.02):这部分页面设计注重实用性,文本框可自由拉伸,方便根据工作难

    openshfit 离线部署openEBS/lvm-localpv 1.6.0 介质包

    本介质包包含离线部署openEBS/lvm-localpv 所需要的1.6.0版本镜像以及charts包,以及运行部署的脚本。

    基于java的校园通讯录ssh源代码(完整前后端+mysql+说明文档+LW).zip

    (1)注册登录功能:用户可以填写基本信息注册成为校园通讯录系统的会员,已经注册的会员可以输入正确的用户名以及密码来登录系统。 (2)个人管理功能:登录系统的会员可以对个人信息进行修改操作,并可以对自己的登录密码进行修改操作。 (3)心情管理功能:可发表新的心情信息,并可对已经发表的心情进行列表查看,并选择指定的心情进行修改以及删除的操作。同时用户还可以查看到所有的好友心情信息。 (4)日志管理功能:可发表新的个人日志,并可对已经发表的日志进行列表查看,并选择指定的日志进行修改以及删除的操作。同时用户还可以查看所有好友的日志信息,并可以对指定的日志进行转载以及分享的操作。 (5)相册管理功能:用户可以设置管理自己的相册,并可以对指定的相册进行上传照片的操作,所有已经删除的照片信息都可以进行修改以及删除的操作,并可以设置为相册的封面。同时用户还可以查看所有好友的相册信息。 (6)好友管理功能:用户可以输入指定的条件来查询其他的用户并进行列表显示,对于指定的用户可以进行详细信息查看以及添加好友的操作。可以查看到其他用户要添加自己为好友的申请记录并进行处理,同时还可以对已经...

    基于java的在线排课系统源代码(完整前后端+mysql+说明文档+LW).zip

    学生选排课系统可以分为登录、排课和选课3个子系统。登录子系统区分排课者(也即系统的管理者)、教师和学生这三者的不同身份,给出不同的权限,在页面中根据身份判断其相应具有的功能来使用这套系统。排课子系统主要供排课者使用,排课者可以在这里进行一切与排课有关的活动。选课系统主要供学生选课使用,在这里可以进行与选课有关的活动;教师可在教师反馈系统中对排课者提出反馈意见,供排课者在排课时可参考使用。 环境说明: 开发语言:Java,jsp JDK版本:JDK1.8 数据库:mysql 5.7 数据库工具:Navicat11 开发软件:eclipse/idea 部署容器:tomcat

    Linux面试试题.docx

    Linux面试试题.docx

    沙猫群算法优化时间卷积双向门控循环单元融合注意力机制SCSO-TCN-BiGRU-Attention光伏数据回归预测【Matlab仿真 5381期】.zip

    CSDN Matlab研究室上传的资料均有对应的仿真结果图,仿真结果图均是完整代码运行得出,完整代码亲测可用,适合小白; 1、完整的代码压缩包内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据提示修改;若不会,私信博主; 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可私信博主或扫描博客文章底部QQ名片; 4.1 博客或资源的完整代码提供 4.2 期刊或参考文献复现 4.3 Matlab程序定制 4.4 科研合作

    淘金算法优化时间卷积双向门控循环单元融合注意力机制GRO-TCN-BiGRU-Attention光伏数据回归预测【Matlab仿真 5378期】.zip

    CSDN Matlab研究室上传的资料均有对应的仿真结果图,仿真结果图均是完整代码运行得出,完整代码亲测可用,适合小白; 1、完整的代码压缩包内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据提示修改;若不会,私信博主; 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可私信博主或扫描博客文章底部QQ名片; 4.1 博客或资源的完整代码提供 4.2 期刊或参考文献复现 4.3 Matlab程序定制 4.4 科研合作

    【BP分类】基于matlab白鹭群算法优化BP神经网络ESOA-BP故障识别数据分类【Matlab仿真 4979期】.zip

    CSDN Matlab研究室上传的资料均有对应的仿真结果图,仿真结果图均是完整代码运行得出,完整代码亲测可用,适合小白; 1、完整的代码压缩包内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据提示修改;若不会,私信博主; 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可私信博主或扫描博客文章底部QQ名片; 4.1 博客或资源的完整代码提供 4.2 期刊或参考文献复现 4.3 Matlab程序定制 4.4 科研合作

    Arista Networks:Arista网络流量分析与优化.docx

    Arista Networks:Arista网络流量分析与优化.docx

    AIX (IBM):AIXJava开发环境搭建.docx

    AIX (IBM):AIXJava开发环境搭建.docx

    【BP回归预测】基于matlab沙猫群算法优化BP神经网络SCSO-BP光伏数据预测(多输入单输出)【Matlab仿真 5179期】.zip

    CSDN Matlab研究室上传的资料均有对应的仿真结果图,仿真结果图均是完整代码运行得出,完整代码亲测可用,适合小白; 1、完整的代码压缩包内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据提示修改;若不会,私信博主; 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可私信博主或扫描博客文章底部QQ名片; 4.1 博客或资源的完整代码提供 4.2 期刊或参考文献复现 4.3 Matlab程序定制 4.4 科研合作

    IP数据包解析实验报告计算机网络课程设计.doc

    IP数据包解析实验报告计算机网络课程设计.doc

    【BP回归预测】基于matlab北方苍鹰算法优化BP神经网络NGO-BP光伏数据预测(多输入单输出)【Matlab仿真 5143期】.zip

    CSDN Matlab研究室上传的资料均有对应的仿真结果图,仿真结果图均是完整代码运行得出,完整代码亲测可用,适合小白; 1、完整的代码压缩包内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据提示修改;若不会,私信博主; 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可私信博主或扫描博客文章底部QQ名片; 4.1 博客或资源的完整代码提供 4.2 期刊或参考文献复现 4.3 Matlab程序定制 4.4 科研合作

Global site tag (gtag.js) - Google Analytics