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 相关文章推荐
匹配任意字符的正则表达式写法
Apr 29 Javascript
jquery动态调整div大小使其宽度始终为浏览器宽度
Jun 06 Javascript
Visual Studio中js调试的方法图解
Jun 30 Javascript
Node.js与PHP、Python的字符处理性能对比
Jul 06 Javascript
javascript函数命名的三种方式及区别介绍
Mar 22 Javascript
深入浅析JavaScript中的arguments对象(强力推荐)
Jun 03 Javascript
使用Vue.js创建一个时间跟踪的单页应用
Nov 28 Javascript
创建一般js对象的几种方式
Jan 19 Javascript
Vue中Axios从远程/后台读取数据
Jan 21 Javascript
node解析修改nginx配置文件操作实例分析
Nov 06 Javascript
Python版实现微信公众号扫码登陆
May 28 Javascript
js编写简易的计算器
Jul 29 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
用phpmyadmin更改mysql5.0登录密码
2008/03/25 PHP
php daodb插入、更新与删除数据
2009/03/19 PHP
处理单名多值表单的详解
2013/06/08 PHP
PHP弹出对话框技巧详细解读
2015/09/26 PHP
PHP扩展开发教程(总结)
2015/11/04 PHP
学习php设计模式 php实现桥梁模式(bridge)
2015/12/07 PHP
windows7配置Nginx+php+mysql的详细教程
2016/09/04 PHP
PHP合并数组的2种方法小结
2016/11/24 PHP
laravel实现分页样式替换示例代码(增加首、尾页)
2017/09/22 PHP
PHP使用zlib扩展实现GZIP压缩输出的方法详解
2018/04/09 PHP
PHP 多任务秒级定时器的实现方法
2018/05/13 PHP
jQuery EasyUI API 中文文档 - ComboBox组合框
2011/10/07 Javascript
javascript删除字符串最后一个字符
2014/01/14 Javascript
js实现支持手机滑动切换的轮播图片效果实例
2015/04/29 Javascript
js数组去重的方法汇总
2015/07/29 Javascript
Bootstrap导航条可点击和鼠标悬停显示下拉菜单的实现代码
2016/06/23 Javascript
最棒的Angular2表格控件
2016/08/10 Javascript
使用react render props实现倒计时的示例代码
2018/12/06 Javascript
vue+高德地图写地图选址组件的方法
2019/05/18 Javascript
详解vue实现坐标拾取器功能示例
2020/11/18 Vue.js
[36:52]DOTA2真视界:基辅特锦赛总决赛
2017/05/21 DOTA
[03:12]完美世界DOTA2联赛PWL DAY9集锦
2020/11/10 DOTA
Python实现的Kmeans++算法实例
2014/04/26 Python
在Python中执行系统命令的方法示例详解
2017/09/14 Python
Python中pip更新和三方插件安装说明
2018/07/08 Python
pytorch三层全连接层实现手写字母识别方式
2020/01/14 Python
CSS3动画之流彩文字效果+图片模糊效果+边框伸展效果实现代码合集
2017/08/18 HTML / CSS
Bootstrap 学习分享
2012/11/12 HTML / CSS
关于canvas绘制模糊问题的解决方法
2019/09/24 HTML / CSS
How to spawning asynchronous work in J2EE
2016/08/29 面试题
工程项目经理岗位职责
2013/12/15 职场文书
环保专项行动方案
2014/05/12 职场文书
幼儿园社区活动总结
2014/07/07 职场文书
储备店长岗位职责
2015/04/14 职场文书
Java并发编程之详解CyclicBarrier线程同步
2021/06/23 Java/Android
电频谱管理的原则是什么
2022/02/18 无线电