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 相关文章推荐
iframe 上下滚动条如何默认在下方实现原理
Dec 10 Javascript
js给onclick赋值传参数的两种方法
Nov 25 Javascript
js/jquery解析json和数组格式的方法详解
Jan 09 Javascript
深入分析JQuery和JavaScript的异同
Oct 23 Javascript
node.js中的http.request方法使用说明
Dec 14 Javascript
JavaScript事件委托技术实例分析
Feb 06 Javascript
javascript日期比较方法实例分析
Jun 17 Javascript
Redux 和 Mobx的选择问题:让你不再困惑!
Sep 18 Javascript
详解webpack 打包文件体积过大解决方案(code splitting)
Apr 10 Javascript
vscode 配置vue+vetur+eslint+prettier自动格式化功能
Mar 23 Javascript
JavaScript鼠标悬停事件用法解析
May 15 Javascript
vue 使用饿了么UI仿写teambition的筛选功能
Mar 01 Vue.js
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代码
2013/03/24 PHP
php版微信返回用户text输入的方法
2016/11/14 PHP
Smarty3配置及入门语法
2017/02/22 PHP
Yii2第三方类库插件Imagine的安装和使用
2017/07/06 PHP
用Greasemonkey 脚本收藏网站会员信息到本地
2009/10/26 Javascript
JS.findElementById()使用介绍
2013/09/21 Javascript
页面图片浮动左右滑动效果的简单实现案例
2014/02/10 Javascript
JavaScript学习笔记之JS函数
2015/01/22 Javascript
jQuery实现冻结表头的方法
2015/03/09 Javascript
js获取url传值的方法
2015/12/18 Javascript
一种新的javascript对象创建方式Object.create()
2015/12/28 Javascript
jQuery Validate表单验证插件 添加class属性形式的校验
2016/01/18 Javascript
jquery插件方式实现table查询功能的简单实例
2016/06/06 Javascript
Javascript删除指定元素节点的方法
2016/06/21 Javascript
Vue和Bootstrap的整合思路详解
2017/06/30 Javascript
JS 判断某变量是否为某数组中的一个值的3种方法(总结)
2017/07/10 Javascript
微信小程序实现选项卡功能
2020/06/19 Javascript
Vue服务端渲染实践之Web应用首屏耗时最优化方案
2019/03/22 Javascript
Angular Excel 导入与导出的实现代码
2019/04/17 Javascript
TensorFlow损失函数专题详解
2018/04/26 Python
在scrapy中使用phantomJS实现异步爬取的方法
2018/12/17 Python
django模型动态修改参数,增加 filter 字段的方式
2020/03/16 Python
jupyter notebook 使用过程中python莫名崩溃的原因及解决方式
2020/04/10 Python
python邮件中附加文字、html、图片、附件实现方法
2021/01/04 Python
HTML5的革新 结构之美
2011/06/20 HTML / CSS
html5本地存储 localStorage操作使用详解
2016/09/20 HTML / CSS
Meli Melo官网:名媛们钟爱的英国奢侈手包品牌
2017/04/17 全球购物
音乐学院硕士生的自我评价分享
2013/11/01 职场文书
爱心倡议书范文
2014/05/12 职场文书
公司人事专员岗位职责
2014/08/11 职场文书
个人纪律作风整改措施思想汇报
2014/10/12 职场文书
工会工作个人总结
2015/03/03 职场文书
幼儿园毕业典礼园长致辞
2015/07/29 职场文书
JavaWeb 入门篇:创建Web项目,Idea配置tomcat
2021/07/16 Java/Android
Java 数据结构七大排序使用分析
2022/04/02 Java/Android
Python中的协程(Coroutine)操作模块(greenlet、gevent)
2022/05/30 Python