1.语法:

  var expression = /pattern/flags ;

  pattern: 任何简单或复杂的正则表达式。

flags: 可以是 g,i,m 或它们的组合。

                   g:表示全局模式,即模式将被应用于所有字符串,而非在发现第一个匹配项时就立即停止。

i:表示不区分大小写。

m:表示多行,及在到达一行文本末尾时还会继续查找下一行。

例子:

匹配字符串中所有有"at"的实例

var pattern1=/at/g

2.模式中的所有元字符都必须转义。

元字符: ({\^$|)?*+.]}

例子: 匹配所有“.at”, 不区分大小写

  var pattern2 = /\.at/gi

3.RegExp 实例方法:

exec() : 接受一个参数,即要应用模式的字符串,然后返回包含第一个匹配项信息的数组,或者没有匹配项的情况下返回null.返回的数组虽然是Array 的实例,但包含两个额外的属性:index和input。其中index表示匹配项在字符串中的位置,而input表示应用正则表达式的字符串。

在数组中,第一项是与整个模式匹配的字符串。其它项是与模式中的捕获组匹配的字符串。如果没有捕获组,数组只有一项。

例子:

var text =“mom and dad and body"

var parrern =/mom( and dad( and bady)?)?/gi

var matches = parrern.exec(text);

alert(matches.index);  //0

alert(matches.input);  //“mom and dad and body"

alert(matches[0]);      //“mom and dad and body"

alert(matches[1]);      //" and dad and bady"

alert(match[2]);          //" and bady"

对于exec()方法而言,即使在模式中设置了全局标志(g),它每次也只会返回一个匹配项。在不设置全局标志的情况下,在同一字符串上调用exec()将始终返回第一个匹配项的信息。而设置全局标志情况下,每次调用exec()则会在字符串中继续查找新的匹配项。

例子:

var  text ="cat , bat, sat, fat";

var pattern1 =/.at/;                    //非全局模式

var matches = pattern1.exec(text);

alert(matches.index);        //0

alert(matches[0]);             //cat

alert(pattern1.lastIndex);  //0

matches = pattern1.exec(text);

alert(matches.index);        //0

alert(matches[0]);             //cat

alert(pattern1.lastIndex);  //0

var pattern2 =/.at/g;             //全局模式

var matches = pattern2.exec(text);

alert(matches.index);        //0

alert(matches[0]);             //cat

alert(pattern2.lastIndex);  //3

matches = pattern2.exec(text);

alert(matches.index);        //5

alert(matches[0]);             //bat

alert(pattern2.lastIndex);  //8

正则表达式的第二个方法是 test(), 它接受一个字符串参数,在模式与该参数匹配的情况下返回true;否则返回false. 在只想知道目标字符串与模式是否匹配时很方便。

4.RegExp 构造函数属性

RegExp 构造函数包含一些属性,这些属性适用于作用域中的所有正则表达式,并且基于所执行的最近一次正则表达式操作而变化。

属性名 说明

input

最近一次要匹配的字符串

lastMatch

最近一次的匹配项

lastParen

最近一次匹配的捕获组
leftContext

input字符串中lastMatch之前的文本

multiline

布尔值,表示是否所有表达式都是多行模式

rightContext

input字符串中lastMatch之后的文本

使用这些属性可以从exec()或test()执行的操作中提取出更具体的信息.

例子:

           var text ="this has been a short summer";

           var pattern = /(.)hort/g;

             if(pattern.test(text)){

            alert(RegExp.input);                    //this has been a short summer

                 alert(RegExp.leftContext);          //this has been a

                 alert(RegExp.rightContext);        //summer

                 alert(RegExp.lastMatch):            //short

                 alert(RegExp.lastParen):            //s

                 alert(RegExp.multiline):              //false

              }

JaveScript 中的正则表达式的更多相关文章

  1. PHP中有关正则表达式的函数集锦

    之前学正则表达式的目的是想从网上抓取点小说啊,文档啊,还有获取相应的视频连接然后批量下载.当时初学PHP根本不知道PHP有专门抓包的工具,就像Simple_html_dom.php(在我的其他博文中有 ...

  2. JavaScript中的正则表达式(终结篇)

    JavaScript中的正则表达式(终结篇) 在之前的几篇文章中,我们了解了正则表达式的基本语法,但那些语法不是针对于某一个特定语言的.这篇博文我们将通过下面几个部分来了解正则表达式在JavaScri ...

  3. Coursera-Getting and Cleaning Data-week4-R语言中的正则表达式以及文本处理

    博客总目录:http://www.cnblogs.com/weibaar/p/4507801.html Thursday, January 29, 2015 补上第四周笔记,以及本次课程总结. 第四周 ...

  4. 9.JAVA中的正则表达式

    一.JAVA中的正则表达式 1.概念:以某种特定的方式描述字符串 1.Java中正则表达式的规则 ?          #{0,1}-?有一个-或者没有 \\           #表示一个" ...

  5. Python::re 模块 -- 在Python中使用正则表达式

    前言 这篇文章,并不是对正则表达式的介绍,而是对Python中如何结合re模块使用正则表达式的介绍.文章的侧重点是如何使用re模块在Python语言中使用正则表达式,对于Python表达式的语法和详细 ...

  6. 工作随笔——UIButton的EdgeInsets + Swift中的正则表达式;

    1.UIButton的EdgeInsets UIButton的EdgeInsets方法,是用来设置title和image对于上左下右四个方向的偏移,但是很奇怪的是,刚开始只有Image,titile也 ...

  7. Javascript中的正则表达式

    Javascript中的正则表达式 刚开始接触正则表达式的时候,觉得这是个很死板的东西(没办法,计算机不能像人眼一样能很快的辨认出我们需要的结果,它需要一定的规则来对它进行限制),了解的越多,发现这个 ...

  8. 在Visual Studio中使用正则表达式匹配换行和批量替换

    系统环境:Windows 8.1 Enterprise Update 2 x64 开发环境:Mircosoft Visual Studio Ultimate 2013 Update 2 RC 问题:如 ...

  9. 浅谈JavaScript中的正则表达式

    引言 对于正则表达式我想作为程序员肯定使用过它,那天书般的表达方式,我用一次就记住它了.这篇博客先介绍一些正则表达式的内容,然后介绍JavaScript中对正则表达式特有的改进.下面开始介绍正则表达式 ...

随机推荐

  1. spring-boot (三) spring data jpa

    学习文章来自:http://www.ityouknow.com/spring-boot.html spring data jpa介绍 首先了解JPA是什么? JPA(Java Persistence ...

  2. 【ASP.NET MVC系列】浅谈ASP.NET MVC运行过程

    ASP.NET MVC系列文章 [01]浅谈Google Chrome浏览器(理论篇) [02]浅谈Google Chrome浏览器(操作篇)(上) [03]浅谈Google Chrome浏览器(操作 ...

  3. xmanager 连接centos 7桌面

    1.前言 工作中服务器有时候需要图形处理一些事物,那么这个时候就需要远程连接方式,XDMCP,VNC,RDP,我今天介绍一下xdmp怎么使用与配置(x display manager control ...

  4. wsgi 协议

    wsgi 协议 前言 本来没打算这么早就学习 wsgi 的,因为想要学习python 是如何处理网络请求的绕不开 wsgi,所以只好先学习一下 wsgi.先对 wsgi 有个印象,到了学习 Djang ...

  5. 用python实现红包机制

    方法一,逻辑是后一个红包的范围是[0.01,剩下的钱*2/剩下的红包数,如果最后钱不足分配给每个人,就把后几个每人分配0.01元. 主要思想就是,每个人至少能领取到0.01元. import rand ...

  6. 一个Fragment的实例

    @Override public void onActivityCreated(Bundle savedInstanceState) { // TODO Auto-generated method s ...

  7. H5 video播放视频遇到的问题

    我在别的网站上下载了一个mp4格式的视频,加到video标签里可以正常播放, 然后我用FLV自己转成mp4,却提示不支持的格式和mine类型, 后来找到一篇文章 http://jingyan.baid ...

  8. 从零开始学安全(二十二)●PHP日期date参数表

    $date=new DateTime(); echo $date->format("Y-m-d h:i:s");

  9. 同一个dll 不同路径下注册 一个失败 一个成功

    一个路径下用regsvr32注册成功,一个注册失败,提示平台不兼容. 最后用depends查看依赖的dll,发现依赖的dll有问题,从注册成功的路径下复制一个过来,重新注册就成功了

  10. linux系统mysql主从配置

    一.原理 mysql主从配置的流程大体如图: 1)master会将变动记录到二进制日志里面: 2)master有一个I/O线程将二进制日志发送到slave; 3) slave有一个I/O线程把mast ...