javascript正则表达式参数/g与/i及/gi的使用指南


Posted in Javascript onAugust 27, 2014

regularexpression=/pattern/[switch]

这个switch就有三种值 g: 全局匹配 i: 忽略大小写 gi: 全局匹配 + 忽略大小写 JScript 语言参考

--------------------------------------------------------------------------------

后向引用 正则表达式一个最重要的特性就是将匹配成功的模式的某部分进行存储供以后使用这一能力。请回想一下,对一个正则表达式模式或部分模式两边添加圆括号将导致这部分表达式存储到一个临时缓冲区中。可以使用非捕获元字符 '?:', '?=', or '?!' 来忽略对这部分正则表达式的保存。

所捕获的每个子匹配都按照在正则表达式模式中从左至右所遇到的内容存储。存储子匹配的缓冲区编号从 1 开始,连续编号直至最大 99 个子表达式。每个缓冲区都可以使用 '\n' 访问,其中 n 为一个标识特定缓冲区的一位或两位十进制数。

后向引用一个最简单,最有用的应用是提供了确定文字中连续出现两个相同单词的位置的能力。请看下面的句子: Is is the cost of of gasoline going up up? 根据所写内容,上面的句子明显存在单词多次重复的问题。如果能有一种方法无需查找每个单词的重复现象就能修改该句子就好了。下面的 JScript 正则表达式使用一个子表达式就可以实现这一功能。

/\b([a-z]+) \1\b/gi等价的 VBScript 表达式为:

"\b([a-z]+) \1\b"

在这个示例中,子表达式就是圆括号之间的每一项。所捕获的表达式包括一个或多个字母字符,即由'[a-z]+' 所指定的。该正则表达式的第二部分是对前面所捕获的子匹配的引用,也就是由附加表达式所匹配的第二次出现的单词。'\1'用来指定第一个子匹配。单词边界元字符确保只检测单独的单词。如果不这样,则诸如 "is issued" 或 "this is" 这样的短语都会被该表达式不正确地识别。

在 JScript 表达式中,正则表达式后面的全局标志 ('g') 表示该表达式将用来在输入字符串中查找尽可能多的匹配。大小写敏感性由表达式结束处的大小写敏感性标记 ('i') 指定。多行标记指定可能出现在换行符的两端的潜在匹配。对 VBScript 而言,在表达式中不能设置各种标记,但必须使用 RegExp 对象的属性来显式设置。

使用上面所示的正则表达式,下面的 JScript 代码可以使用子匹配信息,在一个文字字符串中将连续出现两次的相同单词替换为一个相同的单词:

var ss = "Is is the cost of of gasoline going up up?.\n"; var re = /\b([a-z]+) \1\b/gim; //创建正则表达式样式.var rv = ss.replace(re,"$1"); //用一个单词替代两个单词.

Javascript 相关文章推荐
JavaScript判断两种格式的输入日期的正确性的代码
Mar 25 Javascript
Javascript和Ajax中文乱码吐血版解决方案
Dec 21 Javascript
js 遍历对象的属性的代码
Dec 29 Javascript
javascript操作table(insertRow,deleteRow,insertCell,deleteCell方法详解)
Dec 16 Javascript
Javascript removeChild()删除节点及删除子节点的方法
Dec 27 Javascript
js改变css样式的三种方法推荐
Jun 28 Javascript
jQuery实用密码强度检测
Mar 02 Javascript
JavaScript比较两个数组的内容是否相同(推荐)
May 02 Javascript
用js将long型数据转换成date型或datetime型的实例
Jul 03 Javascript
Vue.js 表单控件操作小结
Mar 29 Javascript
js实现敏感词过滤算法及实现逻辑
Jul 24 Javascript
详解Vue中watch的详细用法
Nov 28 Javascript
JavaScript数组函数unshift、shift、pop、push使用实例
Aug 27 #Javascript
JavaScript实现的in_array函数
Aug 27 #Javascript
JavaScript AJAX之惰性载入函数
Aug 27 #Javascript
IE浏览器不支持getElementsByClassName的解决方法
Aug 27 #Javascript
JavaScript中使用stopPropagation函数停止事件传播例子
Aug 27 #Javascript
JavaScript闭包函数访问外部变量的方法
Aug 27 #Javascript
JavaScript中switch判断容易犯错的一个细节
Aug 27 #Javascript
You might like
php strtotime 函数UNIX时间戳
2009/01/14 PHP
ThinkPHP使用心得分享-分页类Page的用法
2014/05/15 PHP
学习php设计模式 php实现状态模式
2015/12/07 PHP
php使用函数pathinfo()、parse_url()和basename()解析URL
2016/11/25 PHP
PHP new static 和 new self详解
2017/02/19 PHP
基于jquery的多彩百分比 动态进度条 投票效果显示效果实现代码
2011/08/28 Javascript
js解析与序列化json数据(二)序列化探讨
2013/02/01 Javascript
JQuery在页面中添加和除移DOM示例代码
2013/06/24 Javascript
基于Vue实例生命周期(全面解析)
2017/08/16 Javascript
zTree树形菜单交互选项卡效果的实现方法
2017/12/25 Javascript
Vue.js 父子组件通信的十种方式
2018/10/30 Javascript
vue自动化路由的实现代码
2019/09/30 Javascript
深入理解webpack process.env.NODE_ENV配置
2020/02/23 Javascript
[47:10]完美世界DOTA2联赛PWL S3 LBZS vs Rebirth 第二场 12.16
2020/12/18 DOTA
Python实现的二维码生成小软件
2014/07/11 Python
Python3基础之函数用法
2014/08/13 Python
Python迭代器和生成器介绍
2015/03/06 Python
使用Python脚本将绝对url替换为相对url的教程
2015/04/24 Python
Python单体模式的几种常见实现方法详解
2017/07/28 Python
在pandas中一次性删除dataframe的多个列方法
2018/04/10 Python
Django之无名分组和有名分组的实现
2019/04/16 Python
Python基础之字符串常见操作经典实例详解
2020/02/26 Python
Python分析最近大火的网剧《隐秘的角落》
2020/07/02 Python
如何在scrapy中捕获并处理各种异常
2020/09/28 Python
Python与C/C++的相互调用案例
2021/03/04 Python
五十岁生日宴会答谢词
2014/01/15 职场文书
入党积极分子自我鉴定
2014/02/18 职场文书
学校后勤岗位职责
2014/02/19 职场文书
婚礼主持词开场白
2014/03/13 职场文书
征婚广告词
2014/03/17 职场文书
校园广播稿100字
2014/10/06 职场文书
2014年药店店长工作总结
2014/11/17 职场文书
幼儿教师年度个人总结
2015/02/05 职场文书
2016年度农村党员干部主题教育活动总结
2016/04/06 职场文书
党员学习型组织心得体会
2019/06/21 职场文书
Nginx流量拷贝ngx_http_mirror_module模块使用方法详解
2022/04/07 Servers