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鼠标左右键 键盘值小结
Jun 11 Javascript
让低版本浏览器支持input的placeholder属性(js方法)
Apr 03 Javascript
全面解析DOM操作和jQuery实现选项移动操作代码分享
Jun 07 Javascript
JavaScript实现横线提示输入验证码随输入验证码输入消失的方法
Sep 24 Javascript
js 中文汉字转Unicode、Unicode转中文汉字、ASCII转换Unicode、Unicode转换ASCII、中文转换
Dec 06 Javascript
使用bat打开多个cmd窗口执行gulp、node
Feb 17 Javascript
HTML5+Canvas调用手机拍照功能实现图片上传(上)
Apr 21 Javascript
微信小程序通过保存图片分享到朋友圈功能
May 24 Javascript
浅谈Vue数据响应
Nov 05 Javascript
js删除数组中某几项的方法总结
Jan 16 Javascript
解决微信浏览器缓存站点入口文件(IIS部署Vue项目)
Jun 17 Javascript
vue.js实现点击图标放大离开时缩小的代码
Jan 27 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
BBS(php & mysql)完整版(六)
2006/10/09 PHP
PHP开发环境配置(MySQL数据库安装图文教程)
2010/04/28 PHP
PHP实现利用MySQL保存session的方法
2014/08/23 PHP
PHP 计算两个时间段之间交集的天数示例
2019/10/24 PHP
PHP手机号码及邮箱正则表达式实例解析
2020/07/11 PHP
借用Google的Javascript API Loader来加速你的网站
2009/01/28 Javascript
javascript实现回车键提交表单方法总结
2015/01/10 Javascript
常用的JavaScript模板引擎介绍
2015/02/28 Javascript
JS控制网页动态生成任意行列数表格的方法
2015/03/09 Javascript
详解JavaScript实现设计模式中的适配器模式的方法
2016/05/18 Javascript
详解js界面跳转与值传递
2016/11/22 Javascript
Vue.js双向绑定实现原理详解
2016/12/22 Javascript
vue下跨域设置的相关介绍
2017/08/26 Javascript
Angularjs之如何在跨域请求中传输Cookie的方法
2018/06/01 Javascript
javascriptvoid(0)含义以及与"#"的区别讲解
2019/01/19 Javascript
使用Vue.observable()进行状态管理的实例代码详解
2019/05/26 Javascript
[04:11]2014DOTA2国际邀请赛 CIS遗憾出局梦想不灭
2014/07/09 DOTA
Python学习之asyncore模块用法实例教程
2014/09/29 Python
python网络编程之数据传输UDP实例分析
2015/05/20 Python
python实现用户登录系统
2016/05/21 Python
关于Django显示时间你应该知道的一些问题
2017/12/25 Python
Python实现计算字符串中出现次数最多的字符示例
2019/01/21 Python
Django外键(ForeignKey)操作以及related_name的作用详解
2019/07/29 Python
详解Python 中sys.stdin.readline()的用法
2019/09/12 Python
python中PyQuery库用法分享
2021/01/15 Python
详解移动端HTML5页面端去掉input输入框的白色背景和边框(兼容Android和ios)
2016/12/15 HTML / CSS
挪威手表购物网站:Klokker
2016/09/19 全球购物
JAKO-O德国野酷台湾站:德国首屈一指的婴幼童用品品牌
2019/01/14 全球购物
项目合作计划书
2014/01/09 职场文书
校园学雷锋活动月总结
2014/03/09 职场文书
中学生励志演讲稿
2014/04/26 职场文书
优秀党支部申报材料
2014/12/24 职场文书
《跨越海峡的生命桥》教学反思
2016/02/18 职场文书
女人创业励志语录,句句蕴含能量,激发你的潜能
2019/08/20 职场文书
Netty分布式客户端处理接入事件handle源码解析
2022/03/25 Java/Android
MySQL 原理优化之Group By的优化技巧
2022/08/14 MySQL