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 相关文章推荐
鼠标事件延时切换插件
Mar 12 Javascript
Prototype源码浅析 Enumerable部分之each方法
Jan 16 Javascript
基于JQUERY的多级联动代码
Jan 24 Javascript
jQuery操作Select选择的Text和Value(获取/设置/添加/删除)
Mar 06 Javascript
JQuery设置时间段下拉选择实例
Dec 30 Javascript
jquery动态增加删减表格行特效
Nov 20 Javascript
JavaScript代码判断点击第几个按钮
Dec 13 Javascript
详解如何提高 webpack 构建 Vue 项目的速度
Jul 03 Javascript
老生常谈Bootstrap媒体对象
Jul 06 Javascript
Vue中render函数的使用方法
Jan 31 Javascript
如何让微信小程序页面之间的通信不再变困难
Jun 03 Javascript
梳理一下vue中的生命周期
Dec 30 Vue.js
解析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函数解决SQL injection
2006/10/09 PHP
php mssql 数据库分页SQL语句
2008/12/16 PHP
CI操作cookie的方法分析(基于helper类库)
2016/03/28 PHP
PHP生成可点击刷新的验证码简单示例
2016/05/13 PHP
[原创]PHP实现SQL语句格式化功能的方法
2017/07/28 PHP
PHP7移除的扩展和SAPI
2021/03/09 PHP
JQuery1.6 使用方法三
2011/11/23 Javascript
分享XmlHttpRequest调用Webservice的一点心得
2012/07/20 Javascript
Jquery同辈元素选中/未选中效果的实例代码
2013/08/01 Javascript
Jquery EasyUI的添加,修改,删除,查询等基本操作介绍
2013/10/11 Javascript
JS保留两位小数 四舍五入函数的小例子
2013/11/20 Javascript
jQuery动态改变图片显示大小(修改版)的实现思路及代码
2013/12/24 Javascript
jQuery中closest和parents的区别分析
2015/05/07 Javascript
javascript排序函数实现数字排序
2015/06/26 Javascript
jquery实现加载进度条提示效果
2015/11/23 Javascript
JavaScript仿支付宝密码输入框
2015/12/29 Javascript
jQuery图片旋转插件jQueryRotate.js用法实例(附demo下载)
2016/01/21 Javascript
基于jQuery实现仿百度首页选项卡切换效果
2016/05/29 Javascript
jQuery ready()和onload的加载耗时分析
2016/09/08 Javascript
jQuery实现二维码扫描功能
2017/01/09 Javascript
js 中rewrap-ajax.js插件实例代码
2017/10/20 Javascript
js canvas画布实现高斯模糊效果
2018/11/27 Javascript
详解js实时获取并显示当前时间的方法
2019/05/10 Javascript
python multiprocessing模块用法及原理介绍
2019/08/20 Python
Python AutoCAD 系统设置的实现方法
2020/04/01 Python
五种Python转义表示法
2020/11/27 Python
使用CSS3 制作一个material-design 风格登录界面实例
2016/12/12 HTML / CSS
世界上最大的铁人三项商店:Tri UK
2020/11/04 全球购物
C#中类(class)与结构(struct)的异同
2013/11/03 面试题
java程序员面试交流
2012/11/29 面试题
HttpServlet类中的主要方法都有哪些?各自的作用是什么?
2014/03/16 面试题
《穷人》教学反思
2014/04/08 职场文书
保密工作目标责任书
2014/07/28 职场文书
营销经理工作检讨书
2014/11/03 职场文书
单位考核鉴定意见
2015/06/05 职场文书
mysql 8.0.24版本安装配置方法图文教程
2021/05/12 MySQL