常用正则表达式及js正则表达式test错误

1.常见正则表达式  

数值类:

/^[0-9]*[1-9][0-9]*$/                                                                                                   正整数
/^\\d+$/                                                                                                                  正整数+0     
/^((-\\d+)|(0+))$/                                                                                                        负整数+0
/^-[0-9]*[1-9][0-9]*$/                                                                                                  负整数 
/^- \\d+$/                                                                                                                    整数     
/^\\d+(\\.\\d+) $/                                                                                                         正浮点数+0

/^(([0-9]+\\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\\.[0-9]+)|([0-9]*[1-9][0-9]*))$/           正浮点数
/^((-\\d+(\\.\\d+) )|(0+(\\.0+) ))$/                                                                             负浮点数+0     
/^(-(([0-9]+\\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\\.[0-9]+)|([0-9]*[1-9][0-9]*)))$/    负浮点数     
/^(- \\d+)(\\.\\d+) $/                                                                                                 浮点数

字符类(利用正则表达式限制网页表单里的文本框输入内容):

/^(\w|[\u4E00-\u9FA5])*$/                                匹配英文、数字和汉字的混合

/[^\u4E00-\u9FA5]/g                                        不能匹配中文(可以使用为在文本框中只能输入中文,value.replace(/[^\u4E00-\u9FA5]/g,''),符合条件的替换为“”)

/[^\uFF00-\uFFFF]/g                                                                                                                                                                                    不能匹配全角字符(value.replace(/[^\uFF00-\uFFFF]/g,'')限制只能输入全角字符)

/[^\d]/g                                                                                                                                                                                                                             不能匹配数字(value.replace(/[^\d]/g ,'')限制只能输入数字)

^(1\d{2}|2[0-4]\d|25[0-5]|[1-9]\d|[1-9])\.(1\d{2}|2[0-4]\d|25[0-5]|[1-9]\d|\d)\.(1\d{2}|2[0-4]\d|25[0-5]|[1-9]\d|\d)\.(1\d{2}|2[0-4]\d|25[0-5]|[1-9]\d|\d)$    匹配ip正则

^(1\d{2}|2[0-4]\d|25[0-5]|[1-9]\d|[1-9])(\.(1\d{2}|2[0-4]\d|25[0-5]|[1-9]\d|\d)){3}$                                                                                                            匹配ip正则


2.在程序中的使用方法
例如:
var   r   =   /^[0-9]*[1-9][0-9]*$/  //正整数   
r.test(str);   //str为你要判断的字符 执行返回结果 true 或 false

(test判断字符串str是否匹配表达式,返回一个布尔值)

str.match(r);//str为你要判断的字符 执行返回结果 null 或者不为null

str=str.replace(r,'');//str为要判断的字符 执行结果 符合的 置为“”

 

 js中正则表达式匹配时,如果使用test函数,就必须不带引号,引号用//代替,并且必须是先定义规则变量。所有带引号的都是错误的!!!

  如果不适用test,使用match则可以带引号。

 

 3、一些常用的js使用正则的方法:
       删除首尾空格: str.replace(/(^\s*)|(\s*$)/g, "");
   检查是否由数字组成: return  (str.replace(/\d/g,"").length==0); 
   检查是否由数字字母和下划线组成 :return  (this.replace(/\w/g).length==0);
   检查是否为数:return (s.search(/^[+-]?[0-9.]*$/) >= 0;
     返回字节数:return this.replace(/[^\x00-\xff]/g,"**").length;
       检查是否包含汉字: return (this.length != this.replace(/[^\x00-\xff]/g,"**").length);
       只能输入数字代码(小数点也不能输入) :this.value.replace(/\D/g,'');
       只能输入字母和汉字:value.replace(/[\d]/g,'');
   只能输入英文字母和数字,不能输入中文:value.replace(/[^\w\.\/]/ig,'');
   只能输入数字和英文:value.replace(/[^\d|chun]/g,'');
       小数点后只能有最多两位(数字,中文都可输入),不能输入字母和运算符号:
   <input onKeyPress="if((event.keyCode<48 || event.keyCode>57) && event.keyCode!=46 || /\.\d\d$/.test(value))event.returnValue=false">
       小数点后只能有最多两位(数字,字母,中文都可输入),可以输入运算符号:this.value.replace(/^(\-)*(\d+)\.(\d\d).*$/,'$1$2.$3');
       只能输入汉字:value.replace(/[^\u4E00-\u9FA5]/g,'');
       只禁止空格输入:value.replace(/\s/g,'');
       只能输入中文和英文:value.replace(/[^\a-zA-Z\u4E00-\u9FA5]/g,'');
   简单的email检查 :

          function TestEmail(mails) {
               var strr;
               var mail = mails;
               var re = /(\w+@\w+\.\w+)(\.{0,1}\w*)(\.{0,1}\w*)/i; //mvc view 下@需要转义
               re.exec(mail);
               if (RegExp.$3 != "" && RegExp.$3 != "." && RegExp.$2 != ".")
                         strr = RegExp.$1 + RegExp.$2 + RegExp.$3;
               else if (RegExp.$2 != "" && RegExp.$2 != ".")
                         strr = RegExp.$1 + RegExp.$2;
               else
                         strr = RegExp.$1;
              return (strr == mail);
             }

   简单的日期检查,成功返回日期对象:

            function TestDate(dt) {
                  var p;
                  var re1 = /(\d{4})[年./-](\d{1,2})[月./-](\d{1,2})[日]?$/;
                  var re2 = /(\d{1,2})[月./-](\d{1,2})[日./-](\d{2})[年]?$/;
                  var re3 = /(\d{1,2})[月./-](\d{1,2})[日./-](\d{4})[年]?$/;
                  if(re1.test(dt)) {
                         p = re1.exec(dt);
                         return new Date(p[1],p[2],p[3]);
                   }
                 if(re2.test(dt)) {
                         p = re2.exec(dt);
                         return new Date(p[3],p[1],p[2]);
                   }
                 if(re3.test(dt)) {
                         p = re3.exec(dt);
                         return new Date(p[3],p[1],p[2]);
                    }
                  return false;
                } 

   检查是否有列表中的字符字符:

             function TestList(txt,list){
             var re = eval("/["+list+"]/");
             return re.test(txt);
             }//txt 测试文本,list 列表文本

 
  
 
  
 
 
 
 
 
 
 

 

   

   

posted @ 2016-01-06 16:00  码农一直向前  阅读(1310)  评论(0编辑  收藏  举报