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 相关文章推荐
简单实现异步编程promise模式
Jul 31 Javascript
jQuery中$(function() {});问题详解
Aug 10 Javascript
jquery插件autocomplete用法示例
Jul 01 Javascript
JavaScript如何实现跨域请求
Aug 05 Javascript
JavaScript 闭包机制详解及实例代码
Oct 10 Javascript
微信小程序--onShareAppMessage分享参数用处(页面分享)
Apr 18 Javascript
说说AngularJS中的$parse和$eval的用法
Sep 14 Javascript
解决vue中post方式提交数据后台无法接收的问题
Aug 11 Javascript
vue组件数据传递、父子组件数据获取,slot,router路由功能示例
Mar 19 Javascript
jquery实现二级导航下拉菜单效果实例
May 14 jQuery
node.js中module模块的功能理解与用法实例分析
Feb 14 Javascript
Vue中使用wangeditor富文本编辑的问题
Feb 07 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 类商品秒杀计时实现代码
2010/05/05 PHP
使用PHP实现密保卡功能实现代码<打包下载直接运行>
2011/10/09 PHP
apache+codeigniter 通过.htcaccess做动态二级域名解析
2012/07/01 PHP
浅谈php错误提示及查错方法
2015/07/14 PHP
PHP使用pdo实现事务处理操作示例
2018/09/05 PHP
JS 常用校验函数
2009/03/26 Javascript
jQuery图片预加载 等比缩放实现代码
2011/10/04 Javascript
jQuery EasyUI API 中文文档 DateTimeBox日期时间框
2011/10/16 Javascript
一张表格告诉你windows.onload()与$(document).ready()的区别
2014/05/16 Javascript
jQuery选择器全集详解
2014/11/24 Javascript
js基于setTimeout与setInterval实现多线程
2016/06/17 Javascript
javascript宿主对象之window.navigator详解
2016/09/07 Javascript
jquery结合html实现中英文页面切换
2016/11/29 Javascript
jQuery实现聊天对话框
2020/02/08 jQuery
移动端JS实现拖拽两种方法解析
2020/10/12 Javascript
vue前端和Django后端如何查询一定时间段内的数据
2021/02/28 Vue.js
Python代码解决RenderView窗口not found问题
2016/08/28 Python
Python结巴中文分词工具使用过程中遇到的问题及解决方法
2017/04/15 Python
使用Python写一个小游戏
2018/04/02 Python
Django ManyToManyField 跨越中间表查询的方法
2018/12/18 Python
python虚拟环境迁移方法
2019/01/03 Python
python 设置输出图像的像素大小方法
2019/07/04 Python
pytorch 图像预处理之减去均值,除以方差的实例
2020/01/02 Python
使用python接受tgam的脑波数据实例
2020/04/09 Python
美国时尚在线:Showpo
2017/09/08 全球购物
JPA的特点
2014/10/25 面试题
出国留学经济担保书
2014/04/01 职场文书
《池塘边的叫声》教学反思
2014/04/12 职场文书
三好学生演讲稿范文
2014/04/26 职场文书
教师节感恩老师演讲稿
2014/08/28 职场文书
食品安全承诺书范文
2014/08/29 职场文书
基层党员群众路线教育实践活动个人对照检查材料思想汇报
2014/10/05 职场文书
领导干部作风建设工作总结
2014/10/23 职场文书
学雷锋日活动总结
2015/02/06 职场文书
团员年度个人总结
2015/02/26 职场文书
springcloud之Feign超时问题的解决
2021/06/24 Java/Android