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验证手机号码、邮箱格式是否正确示例代码
Jul 28 Javascript
Js apply方法详解
Feb 16 Javascript
超简单的Vue.js环境搭建教程
Mar 17 Javascript
关于jquery form表单序列化的注意事项详解
Aug 01 jQuery
Angular 封装并发布组件的方法示例
Apr 19 Javascript
详解Webpack + ES6 最新环境搭建与配置
Jun 04 Javascript
vue组件开发之用户无限添加自定义填写表单的方法
Aug 28 Javascript
原生JS+HTML5实现的可调节写字板功能示例
Aug 30 Javascript
详解js中Array的方法及技巧
Sep 12 Javascript
js实现点击图片在屏幕中间弹出放大效果
Sep 11 Javascript
在Express中提供静态文件的实现方法
Oct 17 Javascript
详解JavaScript中new操作符的解析和实现
Sep 04 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 中的面向对象编程:通向大型 PHP 工程的办法
2006/12/03 PHP
php的chr和ord函数实现字符加减乘除运算实现代码
2011/12/05 PHP
android上传图片到PHP的过程详解
2015/08/03 PHP
php的mail函数发送UTF-8编码中文邮件时标题乱码的解决办法
2015/10/20 PHP
Laravel框架实现简单的学生信息管理平台案例
2019/05/07 PHP
jQuery中需要注意的细节问题小结
2011/12/06 Javascript
JavaScript中变量提升 Hoisting
2012/07/03 Javascript
Javascript开发之三数组对象实例介绍
2012/11/12 Javascript
Jquery Post处理后不进入回调的原因及解决方法
2014/07/15 Javascript
js简单获取表单中单选按钮值的方法
2016/08/23 Javascript
vue中七牛插件使用的实例代码
2017/07/28 Javascript
Vue中v-for的数据分组实例
2018/03/07 Javascript
JS与CSS3实现图片响应鼠标移动放大效果示例
2018/05/04 Javascript
jQuery实现数字自动增加或者减少的动画效果示例
2018/12/11 jQuery
通过layer实现可输入的模态框的例子
2019/09/27 Javascript
vue 获取到数据但却渲染不到页面上的解决方法
2020/11/19 Vue.js
Python的subprocess模块总结
2014/11/07 Python
实现python版本的按任意键继续/退出
2016/09/26 Python
安装Python和pygame及相应的环境变量配置(图文教程)
2017/06/04 Python
Pycharm编辑器技巧之自动导入模块详解
2017/07/18 Python
Python多线程threading和multiprocessing模块实例解析
2018/01/29 Python
使用python从三个角度解决josephus问题的方法
2020/03/27 Python
解析python 中/ 和 % 和 //(地板除)
2020/06/28 Python
Python根据指定文件生成XML的方法
2020/06/29 Python
一文解决django 2.2与mysql兼容性问题
2020/07/15 Python
python开发一款翻译工具
2020/10/10 Python
Python爬虫实战案例之爬取喜马拉雅音频数据详解
2020/12/07 Python
Python爬虫制作翻译程序的示例代码
2021/02/22 Python
中国电子产品外贸网站:MiniIntheBox
2017/02/06 全球购物
世界上最好的野生海鲜和有机食品:Vital Choice
2020/01/16 全球购物
华为慧通面试题
2012/09/11 面试题
商场端午节活动方案
2014/01/29 职场文书
2014年幼儿园植树节活动方案
2014/03/02 职场文书
2019最新校园运动会广播稿!
2019/06/28 职场文书
阿里云服务器搭建Php+Apache运行环境的详细过程
2021/05/15 PHP
python+pytest接口自动化之token关联登录的实现
2022/04/06 Python