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入门教程(5) js Screen屏幕对象
Jan 31 Javascript
javascript 写的一个简单的timer
Jul 30 Javascript
jQuery实现复选框全选/取消全选/反选及获得选择的值
Jun 12 Javascript
AngularJS入门教程之学习环境搭建
Dec 06 Javascript
基于javascript实现漂亮的页面过渡动画效果附源码下载
Oct 26 Javascript
jQuery检测滚动条是否到达底部
Dec 15 Javascript
vue-cli如何添加less 以及sass
Jul 06 Javascript
vue2.0实现音乐/视频播放进度条组件
Jun 06 Javascript
vue 中滚动条始终定位在底部的方法
Sep 03 Javascript
微信小程序如何通过用户授权获取手机号(getPhoneNumber)
Jan 21 Javascript
js 计算月/周的第一天和最后一天代码
Feb 01 Javascript
vue移动端下拉刷新和上滑加载
Oct 27 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文章按日期(月日)SQL归档语句
2012/11/29 PHP
定义php常量的详解
2013/06/09 PHP
PHP中配置IIS7实现基本身份验证的方法
2015/09/24 PHP
SSO单点登录的PHP实现方法(Laravel框架)
2016/03/23 PHP
php获取给定日期相差天数的方法分析
2017/02/20 PHP
Jquery 表单取值赋值的一些基本操作
2009/10/11 Javascript
javascript Firefox与IE 替换节点的方法
2010/02/24 Javascript
jQuery实现仿淘宝带有指示条的图片转动切换效果完整实例
2015/03/04 Javascript
基于vue2.0实现简单轮播图
2017/11/27 Javascript
react 父子组件之间通讯props
2018/09/08 Javascript
nodejs高大上的部署方式(PM2)
2018/09/11 NodeJs
react高阶组件添加和删除props
2019/04/26 Javascript
jQuery Ajax async=>false异步改为同步时,解决导致浏览器假死的问题
2019/07/22 jQuery
微信小游戏中three.js离屏画布的示例代码
2020/10/12 Javascript
[42:20]Secret vs Liquid 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/17 DOTA
浅谈flask源码之请求过程
2018/07/26 Python
Python3调用百度AI识别图片中的文字功能示例【测试可用】
2019/03/13 Python
Python 进程之间共享数据(全局变量)的方法
2019/07/16 Python
详解python itertools功能
2020/02/07 Python
简单了解Django项目应用创建过程
2020/07/06 Python
python palywright库基本使用
2021/01/21 Python
屈臣氏越南官网:Watsons越南
2021/01/14 全球购物
linux面试题参考答案(9)
2015/01/07 面试题
青年创业培训欢迎词
2014/01/08 职场文书
保险专业自荐信范文
2014/02/20 职场文书
学生会副主席竞聘书
2014/03/31 职场文书
技校毕业生自荐信
2014/06/03 职场文书
党员民主评议自我评价
2014/10/20 职场文书
2015年幼儿园新年寄语
2014/12/08 职场文书
少先队辅导员事迹材料
2014/12/24 职场文书
会计试用期工作总结2015
2015/05/28 职场文书
小学教师见习总结
2015/06/23 职场文书
安全生产隐患排查制度
2015/08/05 职场文书
超详细Python解释器新手安装教程
2021/05/10 Python
Java SSH 秘钥连接mysql数据库的方法
2021/06/28 Java/Android
Go获取两个时区的时间差
2022/04/20 Golang