创建正则表达式的两种方法

显式

new RegExp(“pattern”[,”flags”]);

var regex = new ("abc","gi");

第一个参数为要匹配的模式,第二个为标识信息,有三种标识信息:

g:全局标识,表示对文本中所有匹配的部分起作用,如不设置,则仅搜索和匹配第一个出现的文本段  global

i:忽略大小写标识   ignoreCase

m:多行标识,如不设置这标识,那么元字符“^”和“$”只与文本的开始位置和结尾位置相匹配,如果设置此标识,还可以与字符串中“\n”、“\r”后的位置,即下一行的行首和行尾进行匹配   multiLine

隐式

/pattern/[flags]  不用加引号

var regex = /\w+/i;
var regex = new RegExp("\\w+","i");

以上两者是等价的,当用显式构造函数时,模式字符串中的特殊符号应该使用转义字符,即加上“\”前导符号

模式匹配符

\     指出后面的字符为特殊字符

^    匹配的字符必须在最前面

$    匹配的字符必须在最后面

*    匹配前面的字符0次或n次

+    至少1次

?  0或1次

.     匹配除换行符之外的所有单个字符

x|y        匹配x或y

(x)         标记子表达式的起止位置

{n}         匹配前面的n个字符

{n,}        匹配前面的至少n个字符

{n,m}    匹配前面的n到m个字符

[xyz]      匹配列出的任意字符

[^xyz]    匹配列出的任意字符的补集,即匹配列出字符之外的其他任意字符

[a-d]     匹配abcd当中的任意字符

[\b]       匹配一个空格

\b          匹配一个单词的分界线,比如一个空格

\B         匹配一个单词的非分界线

\d          匹配一个数字,等价于[0-9]

\D         匹配一个非数字

\f          匹配一个表单符

\n          匹配一个换行符

\r          匹配一个回车符

\s          匹配一个空单符,包括空格、Tab、feed、form、换行符,等价于 [\f\n\r\t\v]

\S          匹配一个制表符

\w         匹配所有的字母、数字及下划线,等价于[A-Za-z1-9_]

\W        匹配\w的补集

贪婪匹配与非贪婪匹配

正则表达式默认贪婪匹配,即使用最长匹配原则

例 要将“book”中匹配“bo?”的部分替换成“l”,替换结果为“lok”,而不是“look”

当“?”紧跟在任何其他限定符(*、+、?、{n}、{n,m})之后时,使用非贪婪模式

例 有字符串“booook”,“bo+?”只匹配“bo”部分,而“bo+”匹配“boooo”

选择匹配符

“|”的两个选项是两边尽可能最大的表达式

例 “abcd|efgh2”匹配的是“abcd”或“efgh”,而不是“abcd2”或“efgh2”,如要匹配“abcd2”或“efgh2”,应该创建“(abcd|efgh)2”

特殊字符

如果要匹配以下特殊字符的字面意思,需用“\”进行转义

^    $     *     +     ?     .      (      )      [      ]      {      }      |     \      /

正则表达式的静态属性

(1)index属性。是当前表达式模式首次匹配内容的开始位置,从0开始计数。其初始值为-1,每次成功匹配时,index属性都会随之改变。

(2)input属性。返回当前所作用的字符串,可以简写为$_,初始值为空字符串""。

(3)lastIndex属性。是当前表达式模式首次匹配内容中最后一个字符的下一个位置,从0开始计数,常被作为继续搜索时的起始位置,初始值为-1,表示从起始位置开始搜索,每次成功匹配时,lastIndex属性值都会随之改变。

(4)lastMatch属性。是当前表达式模式的最后一个匹配字符串,可以简写为$&。其初始值为空字符串""。在每次成功匹配时,lastMatch属性值都会随之改变。

(5)lastParen属性。如果表达式模式中有括起来的子匹配,是当前表达式模式中最后的子匹配所匹配到的子字符串,可以简写为$+。其初始值为空字符串""。每次成功匹配时,lastParen属性值都会随之改变。

(6)leftContext属性。是当前表达式模式最后一个匹配字符串左边的所有内容,可以简写为$`(其中“'”为键盘上“Esc”下边的反单引号)。初始值为空字符串""。每次成功匹配时,其属性值都会随之改变。

(7)rightContext属性。是当前表达式模式最后一个匹配字符串右边的所有内容,可以简写为$'。初始值为空字符串""。每次成功匹配时,其属性值都会随之改变。

(8)$1…$9属性。这些属性是只读的。如果表达式模式中有括起来的子匹配,$1…$9属性值分别是第1个到第9个子匹配所捕获到的内容。如果有超过9个以上的子匹配,$1…$9属性分别对应最后的9个子匹配。在一个表达式模式中,可以指定任意多个带括号的子匹配,但RegExp对象只能存储最后的9个子匹配的结果。在RegExp实例对象的一些方法所返回的结果数组中,可以获得所有圆括号内的子匹配结果。

实例属性

(1)global属性。返回创建RegExp对象实例时指定的global标志(g)的状态。如果创建RegExp对象实例时设置了g标志,该属性返回True,否则返回False,默认值为False。

(2)ignoreCase属性。返回创建RegExp对象实例时指定的ignoreCase标志(i)的状态。如果创建RegExp对象实例时设置了i标志,该属性返回True,否则返回False,默认值为False。

(3)multiLine属性。返回创建RegExp对象实例时指定的multiLine标志(m)的状态。如果创建RegExp对象实例时设置了m标志,该属性返回True,否则返回False,默认值为False。

(4)source属性。返回创建RegExp对象实例时指定的表达式文本字符串。

RegExp对象的方法

test方法

语法格式为test(str)。该方法检查一个字符串中是否存在创建RegExp对象实例时所指定的表达式模式,如果存在就返回True,否则返回False。如果找到匹配项,则会更新RegExp对象中的有关静态属性,以反映匹配情况。

exec方法

语法格式为exec(str)。该方法使用创建RegExp对象实例时所指定的表达式模式对一个字符串进行搜索,并返回一个包含搜索结果的数组。

如果为正则表达式设置了全局标志(g),可以通过多次调用exec和test方法在字符串中进行连续搜索,每次都是从RegExp对象的lastIndex属性值指定的位置开始搜索字符串。

如果没有设置全局标志(g),则exec和test方法忽略RegExp对象的lastIndex属性值,从字符串的起始位置开始搜索。

如果exec方法没有找到匹配,返回值为null;如果找到匹配,则返回一个数组,并更新RegExp对象中有关静态属性以反映匹配情况。返回数组中的元素0包含了完整的匹配结果,而元素1~n依次是表达式模式中定义的各个子匹配的结果。

exec方法返回的数组有3个属性,分别是input、index和lastIndex。

input属性是整个被搜索的字符串。

index属性是指匹配在整个被搜索字符串中的位置。

lastIndex属性是指匹配的子字符串的最后一个字符的下一个字符位置。

javascript之正则表达式的更多相关文章

  1. 详解Javascript中正则表达式的使用

    正则表达式用来处理字符串特别好用,在JavaScript中能用到正则表达式的地方有很多,本文对正则表达式基础知识和Javascript中正则表达式的使用做一个总结. 第一部分简单列举了正则表达式在Ja ...

  2. javascript类型系统——正则表达式RegExp类型

    × 目录 [1]对象 [2]实例属性 [3]静态属性[4]实例方法 前面的话 前面已经介绍过javascript中正则表达式的基础语法.javascript的RegExp类表示正则表达式,String ...

  3. JavaScript正则表达式详解(二)JavaScript中正则表达式函数详解

    二.JavaScript中正则表达式函数详解(exec, test, match, replace, search, split) 1.使用正则表达式的方法去匹配查找字符串 1.1. exec方法详解 ...

  4. javascript中正则表达式的基础语法

    × 目录 [1]定义 [2]特点 [3]元字符[4]转义字符[5]字符组[6]量词[7]括号[8]选择[9]断言[10]模式[11]优先级[12]局限性 前面的话 正则表达式在人们的印象中可能是一堆无 ...

  5. 深入浅出的javascript的正则表达式学习教程

    深入浅出的javascript的正则表达式学习教程 阅读目录 了解正则表达式的方法 了解正则中的普通字符 了解正则中的方括号[]的含义 理解javascript中的元字符 RegExp特殊字符中的需要 ...

  6. JavaScript验证正则表达式大全

    JavaScript验证正则表达式大全,搜集最全的JavaScript验证正则表达式,开始查看吧,这里的都是正则表达式的例子,具体和函数结合的使用方法,还请查看下篇文章<JavaScript使用 ...

  7. 如何使用JavaScript和正则表达式进行数据验证

    利用客户端JavaScript的优势,JavaScript中的正则表达式可以简化数据验证的工作,下面与大家分享下如何使用JavaScript和正则表达式进行数据验证,感兴趣的朋友可以参考下哈 数据验证 ...

  8. JavaScript常用正则表达式与应用(一)

    JavaScript的String类和RegExp对象类都定义了相关方法使用正则表达式进行模式匹配,本文将以连载方式介绍JavaScript常用正则表达式与相关应用,欢迎交流 本节是连载一,首先介绍J ...

  9. javascript基础-正则表达式

    概述 正则表达式被用来检索.替换那些符合某个模式的文本 标准正则表达式语法 javascript对正则表达式的支持 替代写法 逆向环视 //需求:替换mpre.cnsuning.com为${pre}, ...

  10. JavaScript中正则表达式判断匹配规则以及常用的方法

    JavaScript中正则表达式判断匹配规则以及常用的方法: 字符串是编程时涉及到的最多的一种数据结构,对字符串进行操作的需求几乎无处不在. 正则表达式是一种用来匹配字符串的强有力的武器.它的设计思想 ...

随机推荐

  1. 使用WebStorm进行javascript调试

    曾经的选择是使用火狐浏览器的Firebug插件,具体的用法到时候在细说,这篇文章登场的是开发静态网页及javascript的利器--webstorm. 一.相关软件安装和配置 安装WebStorm  ...

  2. ubuntu上的附件-终端和用快捷键ctrl+alt+f1 有啥区别

    ctrl +alt +Fn 打开的是模拟终端,简单说来,linux系统一开机会自动打开6个模拟终端,然后自动切换到其中一个(一般来说是切换到图形界面的那个也就是说窗口管理器是在这6个模拟终端中运行的) ...

  3. 第五次C语言作业

    (一)改错题 输出华氏摄氏温度转换表:输入两个整数lower和upper,输出一张华氏摄氏温度转换表,华氏温度的取值范围是{lower,upper},每次增加2℉.计算公式如下: c = 5×(f-3 ...

  4. 基于FPGA的数字识别的实现

    欢迎大家关注我的微信公众号:FPGA开源工作室     基于FPGA的数字识别的实现二 作者:lee神 1 背景知识 1.1基于FPGA的数字识别的方法 通常,针对印刷体数字识别使用的算法有:基于模版 ...

  5. ES6数组新增的几个方法

    关于数组中forEach() .map().filter().reduce().some().every()的总结 1.forEach() var arr = [1,2,3,4]; arr.forEa ...

  6. 模块机制 之commonJs、node模块 、AMD、CMD

    在其他高级语言中,都有模块中这个概念,比如java的类文件,PHP有include何require机制,JS一开始就没有模块这个概念,起初,js通过<script>标签引入代码的方式显得杂 ...

  7. bootstrap 栅格系统 HTTP协议 软件架构 B/S C/S 常见的WEB服务器

    Day32 bootstrap Bootstrap就是响应式布局最成功的实现,为了兼容不同的浏览器采用jQuery,为了适配不同的终端采用CSS3 Media Query (媒体查询) 1.1.1 栅 ...

  8. C#判断画的图形是不是三角形

    这个源代码写的不是十全十美,只是提供一个 还待完善的地方例如判断是否这个图形是封闭的.得空在解决吧 这只是一个算法上 谁有c#的参考手册网盘分享一份 谢谢 下面请看源码 凑够150个字了,不废话了. ...

  9. 托管C++、C++/CLI、CLR

    1.什么是托管C++? 在回答这个问题,首先要搞清楚什么是"托管"(Managed).托管是.NET的一个专门概念,它是融于通用语言运行时(CLR)中的一种新的编程理念,因此我们完 ...

  10. 安装redis,搭建环境

    这里以redis-4.0.9为例   我自己为了好方便管理自己的软件包,就在/usr/local/目录下创建了一个software目录   mkdir  /usr/local/software cd  ...