js正则校验

本文提供了验证邮箱、手机号、邮政编码、Double类型数据、汉字输入、身份证号等常见数据类型的正则表达式,并通过jQuery示例展示了如何在网页中验证这些数据。此外,还详细说明了如何验证座机号码、手机号、手机号码的多种格式、身份证号、手机号、座机号、分机号、输入数据是否为汉字、空项提示以及图片文件的格式验证。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

@param:做验证的正则表达式

/^([a-zA-Z0-9]+[_|\_|\.]?)*[a-zA-Z0-9]+@([a-zA-Z0-9]+[_|\_|\.]?)*[a-zA-Z0-9]+\.[a-zA-Z]{2,3}$/; 验证邮箱格式

/^[1][358]\d{9}$/;  验证手机号码

/^[0-9]{6}$/;验证邮政编码

/^\d+((\.?\d+)|(\d*))$/;验证Double类型数据

/^[\u4e00-\u9fa5]+$/i; 验证输入数据必须是汉字

/^\d{15}(\d{2}[\dXx]){0,1}$/; 验证身份证号 18

/(^[0-9]{3,4}\-[0-9]{7,8}$)|(^[0-9]{3,4}\-[0-9]{7,8}\-[0-9]{1,4}$)|(^[1][358]\d{9})/;验证手机号,座机号,分机号

座机号码 (3-4位区号)-(7-8位直拨号码)-(1-4位分机号码) 如:010-1234567-1234

 

@function JQuery 验证示例,使用方法

function aaaa(){

$("input[type='text']").each(function(){

var a=$(this).val();

alert(a);

});

$("select").each(function(){

var aa=$(this).find("option:selected").text(); 

alert(aa);

})

}

$("select").each(function(){

   var content=$(this).find("option:selected").text(); 

    if(content==""||content=null){

         alert("*项为必填项,请完整填写...");

         break;

       }

       flag=false; 

});

var oFile = document.getElementById("uploadimg");

oFile.onblur = function(){  

    if(oFile.value == ""){

          alert(‘空’);  

    }

};

$("#uploadimg").each()(function(){

   if($("uploadimg").val()==""||$("#uploadimg").val()=null){

         alert("*项为必填项,请完整填写...");

         break;

   }

   flag=false;

});

mId.submit();

}

 $(".conn").each(function(){

       var content=$(this).val();

       alert(content);

       if(content==""||content==null){

         alert("*项为必填项,请完整填写...");

         return false;  //break出错

       }

 });

 $("#"+formId+" input[type='text']").each(function(){

       var content=$(this).val();

       alert(content);

       if(content==""||content==null){

         alert("*项为必填项,请完整填写...");

         return false;  //break出错

       }  

    });

/**验证下拉列表option的值不为"" */

    $("select").each(function(){

   var content=$(this).find("option:selected").text(); 

    if(content==""||content=null){

         alert("*项为必填项,请完整填写...");

         return false ;

       }

       flag=false; 

});

/**注册用户,去掉前后面空格....action类去空格*/

public void test(){

int begin = 0, end = 0;

for (int i = 0; i < loginName.length(); i++) {

if (loginName.charAt(i) != ' ') {

begin = i;

break;

}

}

for (int i = loginName.length() - 1; i > 0; i--) {

if (loginName.charAt(i) != ' ') {

end = i;

break;

}

}

String loginName=loginName.substring(begin, end + 1);//去掉空格之后的字符串

}

@function:去除前后两端空格

@param:str 要去除空格的字符

function trim(str){

str = str.replace(/^\s+|\s+$/g, "");

return str;

}

@function:图片格式的验证

function  checkContent6(){

var filepath= $("input[name='uploadimg']").val(); 

var extStart=filepath.lastIndexOf(".");  

var ext=filepath.substring(extStart,filepath.length).toUpperCase();  

var img=new Image();   

img.src=filepath;

if(filepath==""){

alert("请上传个人近期免冠证件照!");

document.getElementById("uploadimg").focus();

return false;

}

else{     

if(ext!=".JPG"){  

alert("请上传jpg格式图片!");  

document.getElementById("uploadimg").focus();

return false;  

}         

}

return true;

@function验证特殊字符

//更多的过滤字符,请自己补充到new Array("char","varcahr","#"); 
function checkForms()
{

   var iu, iuu, regArray=new Array("!","varchar","#","?","//","\"); 
   iuu=regArray.length;
   var obj=document.getElementById("username").value;
   if(obj=="")
   {
     alert("用户名不能为空");
      document.getElementById("username").focus();
      return false;
   }

   for(iu=1;iu<=iuu;iu++)
   {   
      if(regArray[iu] !="")
       {
          if (obj.indexOf(regArray[iu])!=-1)
           {
             alert("用户名不可以包含:" + regArray[iu]);
             document.getElementById("username").focus();
             return false;
          }
        }
   }
   return true;              
}

 

@function js比较时间大小

function testTime(){

 var s=new Date(dateStart1.replace(/-/g,"/"))//把 yyyy-mm-dd形式的时间格式转换成yyyy/mm/dd,string.replace(yyyy/mm/dd),replace(x,y)由于用一般字符串时不能全局替换,可以正则表达式实现。例:var t1="2011-1-1".replace(/-/g,"/");

 var e=new Date(dateEnd1.replace(/-/g,"/"));   //把String 类型的时间转换成Date类型
   if(s.getTime()<e.getTime()) {         //获取时间,比较大小      

        return true;   

    }else{
      alert("请填写合理的时间范围!");
      alert(s+"   "+s.getTime()+"    "+dateStart1.replace(/-/g,"/"));
      document.getElementById("dateEnd1").focus();
      return false;
   }
  }

}   

时间大小的比较还可以使用 Date.parse("月/日/年")  > Date.parse("月/日/年"),而不是“年月日”或“日月年”,先在文本框里获取时间的String类型值(yyyy-mm-dd),然后转化成mm/dd/yyyy,(String.replace("-","/")),再进行比较,但是一般推荐下述方法,简单可行:

<script>

var a = new Date("2012/12/12");

var b = new Date("2012/12/13");

if(a.getTime()>b.getTime()) {
alert("a");
}else {
alert("b");
}
</script>

补充:

@function:时间大小的比较

if(Date.parse(dateStart1.replace("-","/"))>Date.parse(dateEnd1.replace("-","/"))){

alert("请填写合理的时间范围!");

document.getElementById("dateEnd1").focus();

return false;

}

@function  替换固定电话的中英文半角符号"-  -"

function replace(){

var reg1=/(^[0-9]{3,4}\-[0-9]{7,8}$)|(^[0-9]{3,4}\-[0-9]{7,8}\-[0-9]{1,4}$)|(^[1][358]\d{9})/;//验证电话号码,手机号和固定电话

mobilePhone=mobilePhone.replace(/-/g,"-");//全角符号"-",替换为半角
mobilePhone=mobilePhone.replace(/-/g,"-");//半角符号"-"
$("#contactorTelephone").attr("value",mobilePhone);,把替换好的值回赋给text文本

if(reg1.test(mobilePhone))
  {
  }
  else
  {
   alert("请输入正确格式的电话号码( 手机号 如:138***,座机号 如:010-1234567-12  注意:手机号为11位 )!");
   document.getElementById("contactorTelephone").focus();
   return false;
  }

}

<think>好的,我现在需要帮助用户了解如何使用JavaScript正则表达式来校验正整数。首先,我得回顾一下正整数的定义:正整数是大于零的整数,不包括零和负数,也不包括小数或其他非数字字符。 接下来,我应该考虑正则表达式的基本结构。正则表达式通常由各种元字符和量词组成。对于正整数来说,需要匹配的字符串应该以1-9开头,后面跟着零个或多个数字。这样就能确保数字不以零开头,除非是单独的数字0,但这里需要排除这种情况,因为用户要的是正整数。 不过,这里有个问题,用户需要的是正整数,所以单独的0不应该被匹配。因此,正则表达式应该匹配以1-9开头,后面跟着任意数量的数字(0-9)。所以模式应该是^[1-9]\d*$。其中,^表示字符串的开始,[1-9]匹配第一个字符是1到9,\d*匹配零个或多个数字,$表示字符串的结束。这样就能确保整个字符串都是数字,并且不以0开头,除非是单个数字0,但这里已经排除了0,所以正确。 然后,我需要考虑在JavaScript中如何使用这个正则表达式。通常,我们会使用test方法,例如/^[1-9]\d*$/.test(str)。返回true表示符合,false则不符合。 可能还需要处理一些边界情况,比如输入是字符串类型的数字,或者数字前面有空格。用户是否需要考虑这些情况呢?比如,如果输入是" 123",前面有空格,这时候正则表达式会失败。如果用户希望允许前后空格,可以在正则表达式中加入\s*,比如^\s*[1-9]\d*\s*$。不过用户的问题可能只是针对纯粹的整数,没有空格的情况,所以可能需要根据实际需求调整。 另外,用户可能也会输入0,这时候需要被排除。例如,输入"0"应该返回false,而"123"返回true。测试用例很重要,我应该建议用户测试一些情况,比如: - "123" → true - "0" → false - "0123" → false(因为以0开头) - "-123" → false(负数) - "12.3" → false(小数) - "abc" → false(非数字) 此外,还要注意JavaScript中字符串和数字的转换问题。如果用户传入的是数字类型,比如123,使用toString()转换后再测试会更安全,因为正则表达式操作的是字符串。例如,如果直接传数字给test方法,可能会隐式转换为字符串,但最好显式处理。 可能的误区是用户可能认为类似"0123"这样的字符串是合法的,但实际上前导零会导致正则匹配失败,因此需要明确正整数不能有前导零。但是,如果用户允许前导零,那正则表达式需要调整,但根据题意,这种情况应该排除。 总结一下,正则表达式应该是/^[1-9]\d*$/,然后在JavaScript中使用test方法进行校验。同时,提醒用户注意处理数据类型和边界情况,确保输入是字符串形式,或者进行必要的转换。</think>在JavaScript中使用正则表达式校验正整数时,需要确保字符串满足以下条件: 1. 全部由数字组成 2. 不以0开头(除非本身就是0,但0不是正整数) 3. 必须大于0 ### 📌 正则表达式及解释 ```javascript const positiveIntegerRegex = /^[1-9]\d*$/; ``` 🔍 结构解析: - `^`:匹配字符串开始位置 - `[1-9]`:第一位必须是1-9 - `\d*`:后续可以是任意多个数字(0-9) - `$`:匹配字符串结束位置 ### ✅ 正确用法示例 ```javascript function isPositiveInteger(input) { return typeof input === 'string' ? positiveIntegerRegex.test(input) : positiveIntegerRegex.test(String(input)); } // 测试用例 console.log(isPositiveInteger("123")); // true console.log(isPositiveInteger(456)); // true(自动转为字符串) console.log(isPositiveInteger("0")); // false(0不是正整数) console.log(isPositiveInteger("0123")); // false(前导0) console.log(isPositiveInteger("-5")); // false(负数) console.log(isPositiveInteger("3.14")); // false(小数) ``` ### ⚠️ 常见注意事项 1. **数据类型处理**:建议先将输入转为字符串验证,避免数字类型隐式转换问题 2. **前导零问题**:像"0123"这种形式会被拒绝(如需允许前导零需修改正则) 3. **空值处理**:建议先做空值判断 `if (!input) return false;` 4. **科学计数法**:正则不支持`1e3`这种形式,会被判定为无效 ### 🚀 增强版(允许前后空格) 如果输入可能存在前后空格: ```javascript /^\s*[1-9]\d*\s*$/.test(" 123 "); // true ``` ### 🔧 特殊需求调整 1. 如果要允许0,修改为:`/^(0|[1-9]\d*)$/` 2. 如果要限制最大位数(如10位): ```javascript /^[1-9]\d{0,9}$/ // 1~10位正整数 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值