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中match函数的用法小结
Feb 08 Javascript
基于JQuery实现图片轮播效果(焦点图)
Feb 02 Javascript
Bootstrap 网站实例之单页营销网站
Oct 20 Javascript
Node接收电子邮件的实例代码
Jul 21 Javascript
微信小程序实现轮播图效果
Sep 07 Javascript
响应式框架Bootstrap栅格系统的实例
Dec 19 Javascript
JavaScript递归函数定义与用法实例分析
Jan 24 Javascript
JS使用百度地图API自动获取地址和经纬度操作示例
Apr 16 Javascript
基于layui table返回的值的多级嵌套的解决方法
Sep 19 Javascript
实例分析JS中的相等性判断===、 ==和Object.is()
Nov 17 Javascript
js中的面向对象之对象常见创建方法详解
Dec 16 Javascript
js中实现继承的五种方法
Jan 25 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安装问题
2006/10/09 PHP
discuz的php防止sql注入函数
2011/01/17 PHP
PHP多例模式介绍
2013/06/24 PHP
解析strtr函数的效率问题
2013/06/26 PHP
推荐25款php中非常有用的类库
2014/09/29 PHP
详解PHP的Yii框架中自带的前端资源包的使用
2016/03/31 PHP
php基于curl实现随机ip地址抓取内容的方法
2016/10/11 PHP
phpstorm 配置xdebug的示例代码
2019/03/31 PHP
向左滚动文字 js代码效果
2013/08/17 Javascript
ExtJS的拖拽效果示例
2013/12/09 Javascript
简单谈谈jQuery(function(){})与(function(){})(jQuery)
2014/12/19 Javascript
jQuery利用sort对DOM元素进行排序操作
2016/11/07 Javascript
jQuery中layer分页器的使用
2017/03/13 Javascript
一篇看懂vuejs的状态管理神器 vuex状态管理模式
2017/04/20 Javascript
原生JS+Canvas实现五子棋游戏实例
2017/06/19 Javascript
原生nodejs使用websocket代码分享
2018/04/07 NodeJs
layui递归实现动态左侧菜单
2019/07/26 Javascript
VUE实现Studio管理后台之鼠标拖放改变窗口大小
2020/03/04 Javascript
js实现拾色器插件(ColorPicker)
2020/05/21 Javascript
javascript实现贪吃蛇游戏(娱乐版)
2020/08/17 Javascript
解决Python字典写入文件出行首行有空格的问题
2017/09/27 Python
Python Pandas找到缺失值的位置方法
2018/04/12 Python
在python中利用opencv简单做图片比对的方法
2019/01/24 Python
对Python3中dict.keys()转换成list类型的方法详解
2019/02/03 Python
Python3 chardet模块查看编码格式的例子
2019/08/14 Python
python+opencv实现车牌定位功能(实例代码)
2019/12/24 Python
Python字符串中删除特定字符的方法
2020/01/15 Python
Python chardet库识别编码原理解析
2020/02/18 Python
详解python定时简单爬取网页新闻存入数据库并发送邮件
2020/11/27 Python
python 基于opencv 绘制图像轮廓
2020/12/11 Python
公司活动邀请函
2014/01/24 职场文书
个人先进事迹材料范文
2014/12/29 职场文书
2016年6.5世界环境日宣传活动总结
2016/04/01 职场文书
Windows 11上手初体验:任务栏和开始菜单等迎来大改
2021/11/21 数码科技
Redis 中使用 list,streams,pub/sub 几种方式实现消息队列的问题
2022/03/16 Redis
Python编程中内置的NotImplemented类型的用法
2022/03/23 Python