js正则表达式的使用详解


Posted in Javascript onJuly 09, 2013

js中的正则表达式比起C#中的正则表达式要弱很多,但基本够用了
1定义正则表达式
2关于验证的三个这则表达式方法
3正则表达式式的转义字符

1定义正则表达式
在js中定义正则表达式很简单,有两种方式,一种是通过构造函数,一种是通过//,也就是两个斜杠。
例如

  var   re =new RegExp("\\?(\\w{1,}=\\w{1,}&){1,}\\w{1,}=\\w{1,}");

使用构造函数定义正则表达式,注意大小写,负责就会不起作用。由于构造函数的参数是一个字符串,也可以是两个斜杠的方式定义,遇到一些特殊字符就需要使用\进行转义
通过双斜杠的方式定义同样的正则表达式
var   re =/\?(\w{1,}=\w{1,}&){1,}\w{1,}=\w{1,}/;

var re =new RegExp( /^\?(\w{1,}=\w{1,}&){1,}\w{1,}=\w{1,}/);

可以和构造函数达到同样的效果,但仔细分析,发现,通过构造函数需要更多的转义字符\

2关于验证的三个正则表达式方法

使用正则表达式的主要有字符串的方法match,正则表达式的方法exec,test
正则表达式方法test测试给定的字符串是否满足正则表达式,返回值是bool类型的,只有真和假,如果只是单纯的判断,不需要其他的处理,可以使用尤其是验证时。
 function test(){ 
    var text="index.aspx?test=1&ww=2&www=3"; //    
      var   re =/\?(\w{1,}=\w{1,}&){1,}\w{1,}=\w{1,}/;
    //  var   re =new RegExp("\\?(\\w{1,}=\\w{1,}&){1,}\\w{1,}=\\w{1,}");
        var result=  re.test(text);
     if(result)
     {
        alert("ok");   
     }else
     {
      alert("err");  
     }                       }

正则表达式方法exec测试给定的字符串是否满足正则表达式,返回匹配到的字符串,如果没有匹配的则返回null,和test基本一致,如果需要获取匹配的各个子字符串,可以使用下标的方式,把上边的test的例子可以改写如下
 function test(){ 
   var text="index.aspx?test=1&ww=2&www=3";
            var   re = /\?(\w{1,}=\w{1,}&){1,}\w{1,}=\w{1,}/;
   //  var   re =new RegExp( "\\?(\\w{1,}=\\w{1,}&){1,}\\w{1,}=\\w{1,}");
        var result=  re.exec(text); 
      if(result)
     {
           alert("ok"); 
                          alert(result);  // 是?test=1&ww=2&www=3,ww=2&     
            alert(result[0]+",0");//是?test=1&ww=2&www=3
     alert(result[1]+",1");//是ww=2&     
     }else
     {
      alert("err");  
     }         }

match其实是字符串的方法,但参数确是一个正则表达式,把上边的例子改写后,如下
 function test(){ 
    var text="index.aspx?test=1&ww=234"; //
          var   re = /\?(\w{1,}=\w{1,}&){1,}\w{1,}=\w{1,}/;
     //   var   re2 = "(\\w{1,}=\\w{1,}&){1,}\\w{1,}=\\w{1,}"
     var result= text.match(re);
       if(result)
         {
                           alert(result);//?test=1&ww=234,test=1&        
              alert(result[0]+",0");//?test=1&ww=234
        alert(result[1]+",1");//test=1&
   }else
          {
          alert("err");  
         }  
      }

其实字符串类还有多个函数可以传递正则表达式,split,search,replace等但这些方法已经不适合验证了。
 function test(){ 
    var text="index.aspx?test=1&ww=234"; //
          var   re = /\?(\w{1,}=\w{1,}&){1,}\w{1,}=\w{1,}/;
     //   var   re2 = "(\\w{1,}=\\w{1,}&){1,}\\w{1,}=\\w{1,}"
     var result= text.split(re);     
                  alert(result);        
           alert(result[0]+",0");
        alert(result[1]+",1");    
      }

3正则表达式式的转义字符
在正则表达式中会经常出现转义字符,例如问号?在正则表达式中有特殊的含义,如果需要匹配问号?就需要转义,使用转义字符反斜杠\
如下两个都是匹配问号开头的一段字符串
 function test(){ 
   var text="?test=1&ww=2&www=3";
           var   re = /^\?(\w{1,}=\w{1,}&){1,}\w{1,}=\w{1,}/;//  \?表示配置问号?
   //  var   re =new RegExp( "^\\?(\\w{1,}=\\w{1,}&){1,}\\w{1,}=\\w{1,}");//  \\?表示配置问号?
        var result=  re.exec(text); 
      if(result)
     {
           alert("ok"); 
                 alert(result);        
           alert(result[0]+",0");
        alert(result[1]+",1");     
     }else
     {
      alert("err");  
     }         }

Javascript 相关文章推荐
怎么用javascript进行拖拽
Jul 20 Javascript
可以将word转成html的js代码
Apr 11 Javascript
jquery 选项卡效果 新手代码
Jul 08 Javascript
常用Extjs工具:Extjs.util.Format使用方法
Mar 22 Javascript
JS中判断null、undefined与NaN的方法
Mar 26 Javascript
基于JavaScript怎么实现让歌词滚动播放
Nov 03 Javascript
jQuery插件AjaxFileUpload实现ajax文件上传
May 05 Javascript
深入浅出ES6新特性之函数默认参数和箭头函数
Aug 01 Javascript
jQuery中Chosen三级联动功能实例代码
Mar 07 Javascript
webuploader分片上传的实现代码(前后端分离)
Sep 10 Javascript
解决layui数据表格table的横向滚动条显示问题
Sep 04 Javascript
vue实现输入一位数字转汉字功能
Dec 13 Javascript
解析Jquery的LigerUI如何实现文件上传
Jul 09 #Javascript
Js(JavaScript)中,弹出是或否的选择框示例(confirm用法的实例分析)
Jul 09 #Javascript
探讨在JQuery和Js中,如何让ajax执行完后再继续往下执行
Jul 09 #Javascript
Jquery中LigerUi的弹出编辑框(实现方法)
Jul 09 #Javascript
浅析js中取绝对值的2种方法
Jul 09 #Javascript
浅析LigerUi开发中谨慎载入common.css文件
Jul 09 #Javascript
浅析Js(Jquery)中,字符串与JSON格式互相转换的示例(直接运行实例)
Jul 09 #Javascript
You might like
PHP常用的文件操作函数经典收藏
2013/04/02 PHP
如何解决PHP无法实现多线程的问题
2015/09/25 PHP
Json_encode防止汉字转义成unicode的方法
2016/02/25 PHP
Yii2框架数据验证操作实例详解
2018/05/02 PHP
jQuery移动web开发中的页面初始化与加载事件
2015/12/03 Javascript
Angularjs中如何使用filterFilter函数过滤
2016/02/06 Javascript
Nodejs中解决cluster模块的多进程如何共享数据问题
2016/11/10 NodeJs
js 获取本地文件及目录的方法(推荐)
2016/11/10 Javascript
Angular的$http与$location
2016/12/26 Javascript
基于vue监听滚动事件实现锚点链接平滑滚动的方法
2018/01/17 Javascript
详解jQuery中的isPlainObject()使用方法
2018/02/27 jQuery
Javascript 之封装(Package)
2018/09/14 Javascript
JS高阶函数原理与用法实例分析
2019/01/15 Javascript
JS使用百度地图API自动获取地址和经纬度操作示例
2019/04/16 Javascript
Electron整合React使用搭建开发环境的步骤详解
2020/06/07 Javascript
Python脚本暴力破解栅栏密码
2015/10/19 Python
Python获取网段内ping通IP的方法
2019/01/31 Python
python用线性回归预测股票价格的实现代码
2019/09/04 Python
Python算法中的时间复杂度问题
2019/11/19 Python
Python实现随机取一个矩阵数组的某几行
2019/11/26 Python
python实现两个字典合并,两个list合并
2019/12/02 Python
Pyqt5 关于流式布局和滚动条的综合使用示例代码
2020/03/24 Python
浅谈HTML5新增和废弃的标签
2019/04/28 HTML / CSS
NET程序员上机面试题
2015/05/23 面试题
中级会计职业生涯规划范文
2014/01/16 职场文书
房地产项目策划书
2014/02/05 职场文书
竞选村长演讲稿
2014/04/28 职场文书
2014年民政局关于保密工作整改措施
2014/09/19 职场文书
平安家庭事迹材料
2014/12/20 职场文书
2015年纪念“卢沟桥事变”78周年活动方案
2015/05/06 职场文书
房屋租赁意向书范本
2015/05/09 职场文书
不服劳动仲裁起诉书
2015/05/20 职场文书
爱的教育观后感
2015/06/17 职场文书
城镇居民医疗保险工作总结
2015/08/10 职场文书
零基础学java之带参数以及返回值的方法
2022/04/10 Java/Android
vue-cli3.x配置全局的scss的时候报错问题及解决
2022/04/30 Vue.js