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 相关文章推荐
Jquery 动态生成表格示例代码
Dec 24 Javascript
js动态往表格的td中添加图片并注册事件
Jun 12 Javascript
JS+CSS实现淡入式焦点图片幻灯切换效果的方法
Feb 26 Javascript
AngularJS用户选择器指令实例分析
Nov 04 Javascript
基于Vue制作组织架构树组件
Dec 06 Javascript
浅析Vue中method与computed的区别
Mar 06 Javascript
node打造微信个人号机器人的方法示例
Apr 26 Javascript
详解Vue前端生产环境发布配置实战篇
May 07 Javascript
解决vue-cli@3.xx安装不成功的问题及搭建ts-vue项目
Feb 09 Javascript
JavaScript实现轮播图片完整代码
Mar 07 Javascript
ES6函数和数组用法实例分析
May 23 Javascript
Vue是怎么渲染template内的标签内容的
Jun 05 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
从Web查询数据库之PHP与MySQL篇
2009/09/25 PHP
php可生成缩略图的文件上传类实例
2014/12/17 PHP
PHP+MySQL修改记录的方法
2015/01/21 PHP
PHP自带ZIP压缩、解压缩类ZipArchiv使用指南
2015/03/03 PHP
PHP异常处理定义与使用方法分析
2017/07/25 PHP
关于PHP求解三数之和问题详析
2020/11/09 PHP
php中array_fill函数的实例用法
2021/03/02 PHP
jQuery关于导航条背景切换效果实现示例
2013/09/04 Javascript
jQuery中odd选择器的定义和用法
2014/12/23 Javascript
jQuery+html5实现div弹出层并遮罩背景
2015/04/15 Javascript
jQuery实现html表格动态添加新行的方法
2015/05/28 Javascript
Javascript实现获取及设置光标位置的方法
2015/07/21 Javascript
Bootstrap入门书籍之(三)栅格系统
2016/02/17 Javascript
老生常谈js动态添加事件--- 事件委托
2016/07/19 Javascript
基于jquery实现九宫格拼图小游戏
2018/11/30 jQuery
JS实现换肤功能的方法实例详解
2019/01/30 Javascript
Vue项目中使用flow做类型检测的方法
2020/03/18 Javascript
[01:41]DOTA2超级联赛专访YYF 称一辈子难忘TI2
2013/05/28 DOTA
从Python的源码浅要剖析Python的内存管理
2015/04/16 Python
在Python的Django框架上部署ORM库的教程
2015/04/20 Python
python简单实现获取当前时间
2016/08/27 Python
Python 读取串口数据,动态绘图的示例
2019/07/02 Python
python绘制彩虹图
2019/12/16 Python
Jupyter notebook快速入门教程(推荐)
2020/05/18 Python
Pycharm创建python文件自动添加日期作者等信息(步骤详解)
2021/02/03 Python
谈谈对css属性box-sizing的了解
2017/01/04 HTML / CSS
HTML5 canvas基本绘图之绘制阴影效果
2016/06/27 HTML / CSS
Finishline官网:美国一家领先的运动品牌鞋类、服装零售商
2016/07/20 全球购物
意大利火车票和铁路通行证专家:ItaliaRail
2019/01/22 全球购物
经典c++面试题四
2015/05/14 面试题
中国梦的演讲稿
2014/01/08 职场文书
小学教师师德师风自我剖析材料
2014/09/29 职场文书
党的群众路线教育实践活动总结
2014/10/30 职场文书
2014年乡镇人大工作总结
2014/11/25 职场文书
穆斯林的葬礼读书笔记
2015/06/26 职场文书
原生CSS实现文字无限轮播的通用方法
2021/03/30 HTML / CSS