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. es6入门3--箭头函数与形参等属性的拓展

    对函数拓展兴趣更大一点,优先看,前面字符串后面再说,那些API居多,会使用能记住部分就好. 一.函数参数可以使用默认值 1.默认值生效条件 在变量的解构赋值就提到了,函数参数可以使用默认值了.正常我们 ...

  2. 痞子衡嵌入式:让你从此高效写作的轻量级标记语言(Markdown)

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是轻量级标记语言Markdown. 1.假如你有过这样的烦恼? 想写出排版优雅简洁的文章,并且能够轻易地发表(连同文字和排版)到各大网站上 ...

  3. SpringBoot之打成war包部署到Tomcat

    正常情况下SpringBoot项目是以jar包的形式,正常情况下SpringBoot项目是以jar包的形式,并且SpringBoot是内嵌Tomcat服务器,所以每次重新启动都是用的新的Tomcat服 ...

  4. Spring Cloud Config采用数据库存储配置内容

    在之前的<Spring Cloud构建微服务架构:分布式配置中心>一文中,我们介绍的Spring Cloud Server配置中心采用了Git的方式进行配置信息存储.这一设计巧妙的利用Gi ...

  5. spark高可用集群搭建及运行测试

    文中的所有操作都是在之前的文章spark集群的搭建基础上建立的,重复操作已经简写: 之前的配置中使用了master01.slave01.slave02.slave03: 本篇文章还要添加master0 ...

  6. 《C#并发编程经典实例》学习笔记-关于并发编程的几个误解

    误解一:并发就是多线程 实际上多线程只是并发编程的一种形式,在C#中还有很多更实用.更方便的并发编程技术,包括异步编程.并行编程.TPL 数据流.响应式编程等. 误解二:只有大型服务器程序才需要考虑并 ...

  7. 自建Socket转发,使用远程桌面(mstsc)连接家中电脑

    网络结构图如下: 开题先放图,一切全靠编哈哈. 进入正题! 如图所示,我们需要一个公网服务器,利用公网服务器将内网的数据进行转发,从而实现两个内网服务器的通讯.没错,这不是p2p,原本想做成p2p,因 ...

  8. mysql全文索引之模糊查询

    旧版的MySQL的全文索引只能用在MyISAM表格的char.varchar和text的字段上. 不过新版的MySQL5.6.24上InnoDB引擎也加入了全文索引,所以具体信息大家可以随时关注官网, ...

  9. SpringBoot简介

    Spring Boot,简单讲就是牺牲项目的自由度来减少配置的复杂度(“契约式编程”思想,SpringBoot自动配置方案的指导思想).约定一套规则,把这些框架都自动配置集成好,从而达到“开箱即用”. ...

  10. 《Unix网络编程》读书笔记

    UDP和TCP UDP(User Datagram Protocol,用户数据报协议)是一个无连接协议,不保证UDP数据报会到达其最终目的地,不保证各数据报的先后顺序跨网络后保持不变,也不保证每个数据 ...