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 相关文章推荐
鼠标滚轴控制文本框值的JS代码
Nov 19 Javascript
Webpack 实现 Node.js 代码热替换
Oct 22 Javascript
JavaScript简单实现鼠标移动切换图片的方法
Feb 23 Javascript
详解原生JavaScript实现jQuery中AJAX处理的方法
May 10 Javascript
微信小程序 WXDropDownMenu组件详解及实例代码
Oct 24 Javascript
基于Phantomjs生成PDF的实现方法
Nov 07 Javascript
基于代数方程库Algebra.js解二元一次方程功能示例
Jun 09 Javascript
JavaScript闭包的简单应用
Sep 01 Javascript
JS禁止浏览器右键查看元素或按F12审查元素自动关闭页面示例代码
Sep 07 Javascript
webpack 插件html-webpack-plugin的具体使用
Apr 09 Javascript
p5.js实现故宫橘猫赏秋图动画
Oct 23 Javascript
JavaScript的垃圾回收机制与内存管理
Aug 06 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
Zerg基本策略
2020/03/14 星际争霸
PHP无敌近乎加密方式!
2010/07/17 PHP
PHP中使用foreach和引用导致程序BUG的问题介绍
2012/09/05 PHP
PHP 获取远程文件大小的3种解决方法
2013/07/11 PHP
php中动态修改ini配置
2014/10/14 PHP
JavaScript获取GridView选择的行内容
2009/04/14 Javascript
jqPlot 基于jquery的画图插件
2011/04/26 Javascript
JavaScript实现拼音排序的方法
2012/11/20 Javascript
JavaScript 函数replace深入了解
2013/03/14 Javascript
jquery 中的each()跳出循环的语句
2014/05/23 Javascript
node.js中的fs.fchownSync方法使用说明
2014/12/16 Javascript
jquery单选框radio绑定click事件实现方法
2015/01/14 Javascript
在JavaScript中如何解决用execCommand(
2015/10/19 Javascript
浅谈jQuery 选择器和dom操作
2016/06/07 Javascript
JavaScript的instanceof运算符学习教程
2016/06/08 Javascript
jquery实现ajax加载超时提示的方法
2016/07/23 Javascript
JS中使用gulp实现压缩文件及浏览器热加载功能
2017/07/12 Javascript
vue用递归组件写树形控件的实例代码
2018/07/19 Javascript
vue-swiper的使用教程
2018/08/30 Javascript
iview Upload组件多个文件上传的示例代码
2018/09/30 Javascript
vue中tab选项卡的实现思路
2018/11/25 Javascript
JavaScript实现公告栏上下滚动效果
2020/03/13 Javascript
python自然语言编码转换模块codecs介绍
2015/04/08 Python
在Apache服务器上同时运行多个Django程序的方法
2015/07/22 Python
详解Python3中字符串中的数字提取方法
2017/01/14 Python
python实现简易版计算器
2020/06/22 Python
Django 浅谈根据配置生成SQL语句的问题
2018/05/29 Python
详解Python的循环结构知识点
2019/05/20 Python
Python格式化字符串f-string概览(小结)
2019/06/18 Python
Unineed旗下时尚轻奢网站:FABHunt
2019/05/13 全球购物
建筑工程技术专业求职信
2014/07/16 职场文书
四风查摆问题自查报告
2014/10/10 职场文书
课外活动实习计划
2015/01/19 职场文书
狮子林导游词
2015/02/03 职场文书
刘胡兰观后感
2015/06/16 职场文书
业余无线电通联Q语
2022/02/18 无线电