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. 垂直居中—3行CSS3代码

    方法一: .element { position: relative; top: 50%; transform: translateY(-50%); } 这用用的好处了,无论是块级元素还是行内元素,都 ...

  2. 深入浅出zookeeper之一:功能及本质

    zookeeper(下文简写为zk)大家都不陌生.但是,看到很多同学对zookeeper的理解过于程式化,有些地方甚至需要背,是大可不必的.把本质理解了,概念性和功能介绍都可以推出来的,而且架构要活学 ...

  3. python变量和变量赋值的几种形式

    动态类型的语言 python是动态类型的语言,不需要声明变量的类型. 实际上,python中的变量仅仅只是用来保存一个数据对象的地址.无论是什么数据对象,在内存中创建好数据对象之后,都只是把它的地址保 ...

  4. mybatis是如何防止SQL注入的

    mybatis是如何防止SQL注入的 1.首先看一下下面两个sql语句的区别: <select id="selectByNameAndPassword" parameterT ...

  5. redis的Pub/Sub

    redis的Pub/Sub机制类似于广播架构,Subscriber相当于收音机,可以收听多个channel(频道),Publisher(电台)可以在channel中发布信息. 命令介绍 PUBLISH ...

  6. JAVA & .NET创建对象构造函数调用顺序

    JAVA 定义Person类 package models; ​ public class Person { public Person() { System.out.println("pe ...

  7. DLL加载,设置相对路径

    DLL加载,设置相对路径 1. 加载dll方法之一:(./ 代表当前目录,../ 代表上层目录)包含头文件的相对路径(当前路径为源代码路径,路径 “../../” 当前项目文件夹上级目录),链接lib ...

  8. python多任务-线程

    目录 多任务的概念 线程基础 单线程执行 多线程执行 主线程会等待所有子线程结束后才结束 查看线程数量 线程-注意点 线程执行代码的封装 线程的执行顺序 总结 多任务的概念 什么叫"多任务& ...

  9. es6 语法 (函数扩展)

    //函数参数默认值(more值后不能有参数) { function test(x,y = 'world'){ console.log('默认值',x,y); } test('hello');// he ...

  10. vue从入门到进阶:过滤器filters(五)

    Vue.js 允许你自定义过滤器,可被用于一些常见的文本格式化.过滤器可以用在两个地方:双花括号插值和 v-bind 表达式 (后者从 2.1.0+ 开始支持).过滤器应该被添加在 JavaScrip ...