zoukankan      html  css  js  c++  java
  • js验证网址等Javascript常见验证代码合集

    发一个利用js验证网址是否正确,email格式是否正确,是否为数字及数字的范围,密码或字符长度及是否相等及要求的最小字符串长度,输入是否为空等Javascript常见验证代码合集,用的上的朋友可以拿去了自行添加整理。

    关键的JavaScript代码函数:

    001 /**
    002 * 数据验证框架.增加了对id字段检查出错时,直接在对应后面添加一< span>元素来显示错误信息.
    003 *
    004 * @author www.phpernote.com
    005 * @version 1.0
    006 * @description 2012-05-16
    007 */
    008 var checkData=new function(){
    009 var idExt="_phpernote_Span";//生成span层的id后缀
    010 /**
    011 * 得到中英文字符长(中文为2个字符)
    012 *
    013 * @param {}
    014 * str
    015 * @return 字符长
    016 */
    017 this.length=function(str){
    018     var p1=new RegExp('%u..''g');
    019     var p2=new RegExp('%.''g');
    020     return escape(str).replace(p1, '').replace(p2, '').length;
    021 }
    022 /**
    023 * 删除对应id元素
    024 */
    025 this.remove=function(id){
    026     var idObject=document.getElementById(id);
    027     if(idObject != null)
    028     idObject.parentNode.removeChild(idObject);
    029 }
    030 /**
    031 * 在对应id后面错误信息
    032 *
    033 * @param id:需要显示错误信息的id元素
    034 * str:显示错误信息
    035 */
    036 this.appendError=function(id, str){
    037     this.remove(id + idExt);// 如果span元素存在,则先删除此元素
    038     var spanNew=document.createElement("span");// 创建span
    039     spanNew.id=id + idExt;// 生成spanid
    040     spanNew.style.color="red";
    041     spanNew.appendChild(document.createTextNode(str));// 给span添加内容
    042     var inputId=document.getElementById(id);
    043     inputId.parentNode.insertBefore(spanNew, inputId.nextSibling);// 给需要添加元素后面添加span
    044 }
    045 /**
    046 * @description 过滤所有空格字符。
    047 * @param str:需要去掉空间的原始字符串
    048 * @return 返回已经去掉空格的字符串
    049 */
    050 this.trimSpace=function(str){
    051     str+='';
    052     while ((str.charAt(0) == ' ') || (str.charAt(0) == '???') || (escape(str.charAt(0)) == '%u3000'))
    053     str=str.substring(1, str.length);
    054     while ((str.charAt(str.length - 1) == ' ') || (str.charAt(str.length - 1) == '???') || (escape(str.charAt(str.length - 1)) == '%u3000'))
    055     str=str.substring(0, str.length - 1);
    056     return str;
    057 }
    058 /**
    059 * 过滤字符串开始部分的空格字符串结束部分的空格将文字中间多个相连的空格变为一个空格
    060 *
    061 * @param {Object}
    062 * inputString
    063 */
    064 this.trim=function(inputString){
    065     if(typeof inputString != "string"){
    066         return inputString;
    067     }
    068     var retValue=inputString;
    069     var ch=retValue.substring(0, 1);
    070     while (ch == " "){
    071         // 检查字符串开始部分的空格
    072         retValue=retValue.substring(1, retValue.length);
    073         ch=retValue.substring(0, 1);
    074     }
    075     ch=retValue.substring(retValue.length - 1, retValue.length);
    076     while (ch == " "){
    077         // 检查字符串结束部分的空格
    078         retValue=retValue.substring(0, retValue.length - 1);
    079         ch=retValue.substring(retValue.length - 1, retValue.length);
    080     }
    081     while (retValue.indexOf(" ") != -1){
    082         // 将文字中间多个相连的空格变为一个空格
    083         retValue=retValue.substring(0, retValue.indexOf(" ")) + retValue.substring(retValue.indexOf(" ") + 1, retValue.length);
    084     }
    085     return retValue;
    086 }
    087 /**
    088 * 过滤字符串,指定过滤内容,如果内容为空,则默认过滤 '~!@#$%^&*()-+."
    089 *
    090 * @param {Object}
    091 * str
    092 * @param {Object}
    093 * filterStr
    094 *
    095 * @return 包含过滤内容,返回True,否则返回false;
    096 */
    097 this.filterStr=function(str, filterString){
    098     filterString=filterString == "" "'~!@#$%^&*()-+."" : filterString;
    099     var ch;
    100     var i;
    101     var temp;
    102     var error=false;// 当包含非法字符时,返回True
    103     for (i=0;i <= (filterString.length - 1);i++){
    104         ch=filterString.charAt(i);
    105         temp=str.indexOf(ch);
    106         if(temp != -1){
    107             error=true;
    108             break;
    109         }
    110     }
    111     return error;
    112 }
    113 this.filterStrSpan=function(id, filterString){
    114     filterString=filterString == "" "'~!@#$%^&*()-+."" : filterString;
    115     var val=document.getElementById(id);
    116     if(this.filterStr(val.value, filterString)){
    117         val.select();
    118         var str="不能包含非法字符" + filterString;
    119         this.appendError(id, str);
    120         return false;
    121     }else{
    122         this.remove(id + idExt);
    123         return true;
    124     }
    125 }
    126 /**
    127 * 检查是否为网址
    128 *
    129 * @param {}
    130 * str_url
    131 * @return {Boolean}true:是网址,false:<b>不是</b>网址;
    132 */
    133 this.isURL=function(str_url) {// 验证url
    134     var strRegex="^((https|http|ftp|rtsp|mms)?://)"
    135     "?(([0-9a-z_!~*'().&=+$%-]+: )?[0-9a-z_!~*'().&=+$%-]+@)?" // ftp的user@
    136     "(([0-9]{1,3}.){3}[0-9]{1,3}" // IP形式的URL- 199.194.52.184
    137     "|" // 允许IP和DOMAIN(域名)
    138     "([0-9a-z_!~*'()-]+.)*" // 域名- www.
    139     "([0-9a-z][0-9a-z-]{0,61})?[0-9a-z]." // 二级域名
    140     "[a-z]{2,6})" // first level domain- .com or .museum
    141     "(:[0-9]{1,4})?" // 端口- :80
    142     "((/?)|" // a slash isn't required if there is no file name
    143     "(/[0-9a-z_!~*'().;?:@&=+$,%#-]+)+/?)$";
    144     var re=new RegExp(strRegex);
    145     return re.test(str_url);
    146 }
    147 this.isURLSpan=function(id){
    148     var val=document.getElementById(id);
    149     if(!this.isURL(val.value)){
    150         val.select();
    151         var str="链接不符合格式;";
    152         this.appendError(id, str);
    153         return false;
    154     }else{
    155         this.remove(id + idExt);
    156         return true;
    157     }
    158 }
    159 /**
    160 * 检查是否为电子邮件
    161 *
    162 * @param {}
    163 * str
    164 * @return {Boolean}true:电子邮件,false:<b>不是</b>电子邮件;
    165 */
    166 this.isEmail=function(str){
    167     var re=/^([a-zA-Z0-9]+[_|-|.]?)*[a-zA-Z0-9]+@([a-zA-Z0-9]+[_|-|.]?)*[a-zA-Z0-9]+.[a-zA-Z]{2,3}$/;
    168     return re.test(str);
    169 }
    170 this.isEmailSpan=function(id){
    171     var val=document.getElementById(id);
    172     if(!this.isEmail(val.value)){
    173         val.select();
    174         var str="邮件不符合格式;";
    175         this.appendError(id, str);
    176         return false;
    177     }else{
    178         this.remove(id + idExt);
    179         return true;
    180     }
    181 }
    182 /**
    183 * 检查是否为数字
    184 *
    185 * @param {}
    186 * str
    187 * @return {Boolean}true:数字,false:<b>不是</b>数字;
    188 */
    189 this.isNum=function(str){
    190     var re=/^[d]+$/;
    191     return re.test(str);
    192 }
    193 this.isNumSpan=function(id){
    194     var val=document.getElementById(id);
    195     if(!this.isNum(val.value)){
    196         val.select();
    197         var str="必须是数字;";
    198         this.appendError(id, str);
    199         return false;
    200     }else{
    201         this.remove(id + idExt);
    202         return true;
    203     }
    204 }
    205 /**
    206 * 检查数值是否在给定范围以内,为空,不做检查<br>
    207 *
    208 * @param {}
    209 * str_num
    210 * @param {}
    211 * small 应该大于或者等于的数值(此值为空时,只检查不能大于最大值)
    212 * @param {}
    213 * big 应该小于或者等于的数值(此值为空时,只检查不能小于最小值)
    214 *
    215 * @return {Boolean}<b>小于最小数值或者大于最大数值</b>数字返回false 否则返回true;
    216 */
    217 this.isRangeNum=function(str_num, small, big){
    218     if(!this.isNum(str_num)) // 检查是否为数字
    219     return false;
    220     if(small == "" && big == "")
    221     throw str_num + "没有定义最大,最小值数字!";
    222     if(small != ""){
    223         if(str_num < small)
    224         return false;
    225     }
    226     if(big != ""){
    227         if(str_num > big)
    228         return false;
    229     }
    230     return true;
    231 }
    232 this.isRangeNumSpan=function(id, small, big){
    233     var val=document.getElementById(id);
    234     if(!this.isRangeNum(val.value, small, big)){
    235         val.select();
    236         var str="";
    237         if(small != ""){
    238             str="应该大于或者等于 " + small;
    239         }
    240         if(big != ""){
    241             str+=" 应该小于或者等于 " + big;
    242         }
    243         this.appendError(id, str);
    244         return false;
    245     }else{
    246         this.remove(id + idExt);
    247         return true;
    248     }
    249 }
    250 /**
    251 * 检查是否为合格字符串(不区分大小写)<br>
    252 * 是由a-z0-9_组成的字符串
    253 *
    254 * @param {}
    255 * str 检查的字符串
    256 * @param {}
    257 * idStr 光标定位的字段ID<b>只能接收ID</b>
    258 * @return {Boolean}<b>不是</b>"a-z0-9_"组成返回false,否则返回true;
    259 */
    260 this.isLicit=function(str){
    261     var re=/^[_0-9a-zA-Z]*$/;
    262     return re.test(str);
    263 }
    264 this.isLicitSpan=function(id){
    265     var val=document.getElementById(id);
    266     if(!this.isLicit(val.value)){
    267         val.select();
    268         var str="是由a-z0-9_组成的字符串(不区分大小写);";
    269         this.appendError(id, str);
    270         return false;
    271     }else{
    272         this.remove(id + idExt);
    273         return true;
    274     }
    275 }
    276 /**
    277 * 检查二个字符串是否相等
    278 *
    279 * @param {}
    280 * str1 第一个字符串
    281 * @param {}
    282 * str2 第二个字符串
    283 * @return {Boolean}字符串不相等返回false,否则返回true;
    284 */
    285 this.isEquals=function(str1, str2){
    286     return str1 == str2;
    287 }
    288 this.isEqualsSpan=function(id, id1){
    289     var val=document.getElementById(id);
    290     var val1=document.getElementById(id1);
    291     if(!this.isEquals(val.value, val1.value)){
    292         val.select();
    293         var str="二次输入内容必须一样;";
    294         this.appendError(id, str);
    295         return false;
    296     }else{
    297         this.remove(id + idExt);
    298         return true;
    299     }
    300 }
    301 /**
    302 * 检查字符串是否在给定长度范围以内(中文字符以2个字节计算),字符为空,不做检查<br>
    303 *
    304 * @param {}
    305 * str 检查的字符
    306 * @param {}
    307 * lessLen 应该大于或者等于的长度
    308 * @param {}
    309 * moreLen 应该小于或者等于的长度
    310 *
    311 * @return {Boolean}<b>小于最小长度或者大于最大长度</b>数字返回false;
    312 */
    313 this.isRange=function(str, lessLen, moreLen){
    314     var strLen=this.length(str);
    315     if(lessLen != ""){
    316     if(strLen < lessLen)
    317         return false;
    318     }
    319     if(moreLen != ""){
    320         if(strLen > moreLen)
    321         return false;
    322     }
    323     if(lessLen == "" && moreLen == "")
    324     throw "没有定义最大最小长度!";
    325     return true;
    326 }
    327 this.isRangeSpan=function(id, lessLen, moreLen){
    328     var val=document.getElementById(id);
    329     if(!this.isRange(val.value, lessLen, moreLen)){
    330         var str="长度";
    331         if(lessLen != "")
    332             str+="大于或者等于 " + lessLen + ";";
    333         if(moreLen != "")
    334             str+=" 应该小于或者等于 " + moreLen;
    335         val.select();
    336         this.appendError(id, str);
    337         return false;
    338     }else{
    339         this.remove(id + idExt);
    340         return true;
    341     }
    342 }
    343 /**
    344 * 检查字符串是否小于给定长度范围(中文字符以2个字节计算)<br>
    345 *
    346 * @param {}
    347 * str 字符串
    348 * @param {}
    349 * lessLen 小于或等于长度
    350 *
    351 * @return {Boolean}<b>小于给定长度</b>数字返回false;
    352 */
    353 this.isLess=function(str, lessLen){
    354     return this.isRange(str, lessLen, "");
    355 }
    356 this.isLessSpan=function(id, lessLen){
    357     var val=document.getElementById(id);
    358     if(!this.isLess(val.value, lessLen)){
    359         var str="长度大于或者等于 " + lessLen;
    360         val.select();
    361         this.appendError(id, str);
    362         return false;
    363     }else{
    364         this.remove(id + idExt);
    365         return true;
    366     }
    367 }
    368 /**
    369 * 检查字符串是否大于给定长度范围(中文字符以2个字节计算)<br>
    370 *
    371 * @param {}
    372 * str 字符串
    373 * @param {}
    374 * moreLen 小于或等于长度
    375 *
    376 * @return {Boolean}<b>大于给定长度</b>数字返回false;
    377 */
    378 this.isMore=function(str, moreLen){
    379     return this.isRange(str, '', moreLen);
    380 }
    381 this.isMoreSpan=function(id, moreLen){
    382     var val=document.getElementById(id);
    383     if(!this.isMore(val.value, moreLen)){
    384         var str="长度应该小于或者等于 " + moreLen;
    385         val.select();
    386         this.appendError(id, str);
    387         return false;
    388     }else{
    389         this.remove(id + idExt);
    390         return true;
    391     }
    392 }
    393 /**
    394 * 检查字符不为空
    395 *
    396 * @param {}
    397 * str
    398 * @return {Boolean}<b>字符为空</b>返回true,否则为false;
    399 */
    400 this.isEmpty=function(str){
    401     return str == '';
    402 }
    403 this.isEmptySpan=function(id){
    404     var val=document.getElementById(id);
    405     if(this.isEmpty(val.value)){
    406         var str="不允许为空;";
    407         val.select();
    408         this.appendError(id, str);
    409         return false;
    410     }else{
    411         this.remove(id + idExt);
    412         return true;
    413     }
    414     }
    415 }

    具体使用方法见下面案例:

    01 <html>
    02 <head>
    03 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    04 <title>js验证网址,js验证email,js验证数字,js验证密码,js验证字符长度及是否相等,js验证数字范围,js验证是否为空等Javascript验证代码合集(www.phpernote.com)</title>
    05 <script type="text/javascript" src="function.js"></script>
    06 <script type="text/javascript">
    07 function checkForm(){
    08 var isPass = true;
    09 //过滤字符串
    10 if(!(checkData.isEmptySpan("filterStr") && checkData.filterStrSpan('filterStr','#$%$'))) {
    11 isPass = false;
    12 }
    13 //检查url
    14 if(!(checkData.isEmptySpan("isURL") && checkData.isURLSpan('isURL')))
    15 isPass = false;
    16 //email
    17 if(!(checkData.isEmptySpan("isEmail") && checkData.isEmailSpan('isEmail')))
    18 isPass = false;
    19 //数字
    20 if(!(checkData.isNumSpan('isNum')))
    21 isPass = false;
    22 //数字大小
    23 if(!(checkData.isEmptySpan("isRangeNum") && checkData.isNumSpan('isRangeNum') && checkData.isRangeNumSpan('isRangeNum',10,100)))
    24 isPass = false;
    25 //密码 (数字,字母,下划线)
    26 if(!(checkData.isLicitSpan('isLicit')))
    27 isPass = false;
    28 //二个字段是否相等
    29 if(!(checkData.isEmptySpan("isEquals") && checkData.isEqualsSpan('isEquals','isEquals1')))
    30 isPass = false;
    31 //字符长度控制
    32 if(!(checkData.isRangeSpan('isRange',5,10)))
    33 isPass = false;
    34 //字符最短控制
    35 if(!(checkData.isLessSpan('isLess',10)))
    36 isPass = false;
    37 //字符最长控制
    38 if(!(checkData.isEmptySpan("isMore") && checkData.isMoreSpan('isMore',30)))
    39 isPass = false;
    40 //为空控制
    41 if(!(checkData.isEmptySpan("isEmpty")))
    42 isPass = false;
    43 return isPass;
    44 }
    45 </script>
    46 </head>
    47 <body>
    48 <form action="index.jsp" method="post" onsubmit="return checkForm();">
    49 <table>
    50 <tbody>
    51 <tr>
    52 <td>字符过滤:<input type="text" id="filterStr" name="filterStr"></td>
    53 <td>链接:<input type="text" id="isURL" name="isURL"></td>
    54 </tr>
    55 <tr>
    56 <td>邮件:<input type="text" id="isEmail" name="isEmail"></td>
    57 <td>数字:<input type="text" id="isNum" name="isNum"></td>
    58 </tr>
    59 <tr>
    60 <td>数字范围:<input type="text" id="isRangeNum" name="isRangeNum"></td>
    61 <td>a-zA-Z0-9_<input type="text" id="isLicit" name="isLicit"></td>
    62 </tr>
    63 <tr>
    64 <td>判断相等:<input type="text" id="isEquals" name="isEquals"></td>
    65 <td><input type="text" id="isEquals1" name="isEquals1"></td>
    66 </tr>
    67 <tr>
    68 <td>长度控制:<input type="text" id="isRange" name="isRange"></td>
    69 <td>长度大于控制:<input type="text" id="isLess" name="isLess"></td>
    70 </tr>
    71 <tr>
    72 <td>长度小于控制:<input type="text" id="isMore" name="isMore"></td>
    73 <td>是否为空:<input type="text" id="isEmpty" name="isEmpty"></td>
    74 </tr>
    75 <tr>
    76 <td><input type="submit" name="submit" value="提交数据"></td>
    77 </tr>
    78 </tbody>
    79 </table>
    80 </form>
    81 </body>
    82 </html>
  • 相关阅读:
    [转]Release版程序调试排错技巧
    关于获得MFC窗口其它类指针的方法(CSDN)
    MFC .DLL指南(二)
    对“仅通过崩溃地址找出源代码的出错行”一文的补充与改进,转自vckbase,记录一下
    [转]调试Release版本应用程序,不知道转自哪里
    MFC的DLL 概述
    从今天开始每天写C++或其他学习的知识的笔记,以激励自己
    近日发现vs2005安装的一个问题
    VC中处理C1010错误的两种方法
    [转]VC调试篇不知道转自何处
  • 原文地址:https://www.cnblogs.com/lpw94/p/4864679.html
Copyright © 2011-2022 走看看