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 相关文章推荐
脚本收藏iframe
Jul 21 Javascript
Web版彷 Visual Studio 2003 颜色选择器
Jan 09 Javascript
解读JavaScript代码 var ie = !-[1,] 最短的IE判定代码
May 28 Javascript
16个最流行的JavaScript框架[推荐]
May 29 Javascript
用Javascript评估用户输入密码的强度实现代码
Nov 30 Javascript
利用毫秒减值计算时长的js代码
Sep 22 Javascript
javascript 用函数实现继承详解
May 28 Javascript
底部悬浮通栏可以关闭广告位的实现方法
Jun 01 Javascript
微信小程序实现人脸检测功能
May 25 Javascript
vue加载完成后的回调函数方法
Sep 07 Javascript
jQuery实现图片下载代码
Jul 18 jQuery
JS数组方法slice()用法实例分析
Jan 18 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数组的一些常见操作汇总
2011/07/17 PHP
Discuz批量替换帖子内容的方法(使用SQL更新数据库)
2014/06/23 PHP
浅谈ThinkPHP的URL重写
2014/11/25 PHP
PHP网络操作函数汇总
2015/05/18 PHP
php实现的微信红包算法分析(非官方)
2015/09/25 PHP
php创建桌面快捷方式实现方法
2015/12/31 PHP
Js+XML 操作
2006/09/20 Javascript
JavaScript DOM 添加事件
2009/02/14 Javascript
JavaScript Title、alt提示(Tips)实现源码解读
2010/12/12 Javascript
Jquery结合HTML5实现文件上传
2015/06/25 Javascript
如何实现移动端浏览器不显示 pc 端的广告
2015/10/15 Javascript
浅析C/C++,Java,PHP,JavaScript,Json数组、对象赋值时最后一个元素后面是否可以带逗号
2016/03/22 Javascript
vue实现提示保存后退出的方法
2018/03/15 Javascript
JavaScript实现构造json数组的方法分析
2018/08/17 Javascript
如何优雅的在一台vps(云主机)上面部署vue+mongodb+express项目
2019/01/20 Javascript
微信小程序实现获取用户信息并存入数据库操作示例
2019/05/07 Javascript
js 根据对象数组中的属性进行排序实现代码
2019/09/12 Javascript
js+css3实现简单时钟特效
2020/09/13 Javascript
Python中time模块和datetime模块的用法示例
2016/02/28 Python
深入分析python中整型不会溢出问题
2018/06/18 Python
python十进制和二进制的转换方法(含浮点数)
2018/07/07 Python
python实现五子棋小游戏
2020/03/25 Python
Python3 实现爬取网站下所有URL方式
2020/01/16 Python
python集合删除多种方法详解
2020/02/10 Python
用Python在Excel里画出蒙娜丽莎的方法示例
2020/04/28 Python
Python中Yield的基本用法
2020/10/18 Python
Django+Django-Celery+Celery的整合实战
2021/01/20 Python
HTML5 canvas基本绘图之图形变换
2016/06/27 HTML / CSS
美国本地交易和折扣网站:LocalFlavor.com
2017/10/26 全球购物
英国Iceland杂货店:网上食品购物
2020/12/16 全球购物
解释i节点在文件系统中的作用
2013/11/26 面试题
银行实习生的自我评价
2013/12/09 职场文书
党性心得体会
2014/09/03 职场文书
时尚女魔头观后感
2015/06/04 职场文书
解约证明模板
2015/06/19 职场文书
vue修饰符.capture和.self的区别
2022/04/22 Vue.js