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利用初始化数据装配模版的实现代码
Nov 17 Javascript
jquery实现加载等待效果示例
Sep 25 Javascript
js正则表达式中test,exec,match方法的区别说明
Jan 29 Javascript
jQuery实现tag便签去重效果的方法
Jan 20 Javascript
js强制把网址设为默认首页
Sep 29 Javascript
JavaScript数据绑定实现一个简单的 MVVM 库
Apr 08 Javascript
Bootstrap自动适应PC、平板、手机的Bootstrap栅格系统
May 27 Javascript
npm国内镜像 安装失败的几种解决方案
Jun 04 Javascript
微信小程序实现底部导航
Nov 05 Javascript
JS实现根据数组对象的某一属性排序操作示例
Jan 14 Javascript
layer.msg()去掉默认时间,实现手动关闭的方法
Sep 12 Javascript
微信小程序 根据不同用户切换不同TabBar
Apr 21 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
解析centos中Apache、php、mysql 默认安装路径
2013/06/25 PHP
PHP中imagick函数的中文解释
2015/01/21 PHP
php商品对比功能代码分享
2015/09/24 PHP
PHP多种序列化/反序列化的方法详解
2017/06/23 PHP
PHP工厂模式、单例模式与注册树模式实例详解
2019/06/03 PHP
jQuery代码优化 选择符篇
2011/11/01 Javascript
JavaScript学习笔记记录我的旅程
2012/05/23 Javascript
网页整体变灰白色(兼容各浏览器)实例
2013/04/21 Javascript
javascript创建和存储cookie示例
2014/01/07 Javascript
javascript实现自动填写表单实例简析
2015/12/02 Javascript
Knockout自定义绑定创建方法
2015/12/26 Javascript
Jsonp 关键字详解及json和jsonp的区别,ajax和jsonp的区别
2015/12/30 Javascript
JS遍历数组及打印数组实例分析
2016/01/21 Javascript
BootStrap3学习笔记(一)之网格系统
2016/05/20 Javascript
JavaScript计算器网页版实现代码分享
2016/07/15 Javascript
JS实现css hover操作的方法示例
2017/04/07 Javascript
基于JavaScript实现的希尔排序算法分析
2017/04/14 Javascript
jQuery上传插件webupload使用方法
2017/08/01 jQuery
vue组件学习教程
2017/09/09 Javascript
js的函数的按值传递参数(实例讲解)
2017/11/16 Javascript
vue + element-ui实现简洁的导入导出功能
2017/12/22 Javascript
Vue的轮播图组件实现方法
2018/03/03 Javascript
详解nodejs 配置文件处理方案
2019/01/02 NodeJs
详解vuex中action何时完成以及如何正确调用dispatch的思考
2019/01/21 Javascript
jquery中为什么能用$操作
2019/06/18 jQuery
vue拖拽组件 vuedraggable API options实现盒子之间相互拖拽排序
2019/07/08 Javascript
js中addEventListener()与removeEventListener()用法案例分析
2020/03/02 Javascript
Python中利用函数装饰器实现备忘功能
2015/03/30 Python
python timestamp和datetime之间转换详解
2017/12/11 Python
Django处理多用户类型的方法介绍
2019/05/18 Python
python的一些加密方法及python 加密模块
2019/07/11 Python
python 统计文件中的字符串数目示例
2019/12/24 Python
英国莱斯特松木橡木家具网上商店:Choice Furniture Superstore
2019/07/05 全球购物
C语言中一个结构不能包含指向自己的指针吗
2012/05/25 面试题
淘宝客服工作职责
2014/07/11 职场文书
罚款通知怎么写
2015/04/22 职场文书