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 相关文章推荐
ASP.NET jQuery 实例18 通过使用jQuery validation插件校验DropDownList
Feb 03 Javascript
js中escape对应的C#解码函数 UrlDecode
Dec 16 Javascript
jQuery点击tr实现checkbox选中的方法
Mar 19 Javascript
js实现可拖动DIV的方法
Dec 17 Javascript
教你用jquery实现iframe自适应高度
Jun 11 Javascript
JQuery实现图片轮播效果
Sep 15 Javascript
Node.js中常规的文件操作总结
Oct 13 Javascript
Angular.js 4.x中表单Template-Driven Forms详解
Apr 25 Javascript
jQuery复合事件用法示例
Jun 10 jQuery
JS弹窗 JS弹出DIV并使整个页面背景变暗功能的实现代码
Apr 21 Javascript
Vue使用Canvas绘制图片、矩形、线条、文字,下载图片
Apr 26 Javascript
swiper Scrollbar滚动条组件详解
Sep 08 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
第十一节--重载
2006/11/16 PHP
基于PHP静态类的原罪详解
2013/05/06 PHP
PHP5.3以上版本安装ZendOptimizer扩展
2015/03/27 PHP
使用php自动备份数据库表的实现方法
2017/07/28 PHP
safari下载文件自动加了html后缀问题
2018/11/09 PHP
PHP PDOStatement::fetchAll讲解
2019/01/31 PHP
JavaScript中null与undefined分析
2009/07/25 Javascript
JavaScript面向对象设计二 构造函数模式
2011/12/20 Javascript
web的各种前端打印方法之jquery打印插件jqprint实现网页打印
2013/01/09 Javascript
简单选项卡 js和jquery制作方法分享
2014/02/26 Javascript
jQuery向后台传入json格式数据的方法
2015/02/13 Javascript
angularjs实现的前端分页控件示例
2017/02/10 Javascript
ES6中Array.includes()函数的用法
2017/09/20 Javascript
解决Vue使用mint-ui loadmore实现上拉加载与下拉刷新出现一个页面使用多个上拉加载后冲突问题
2017/11/07 Javascript
vue如何引入sass全局变量
2018/06/28 Javascript
详解Vue CLI3配置之filenameHashing使用和源码设计使用和源码设计
2018/08/31 Javascript
Vue中的组件及路由使用实例代码详解
2019/05/22 Javascript
在vue项目实现一个ctrl+f的搜索功能
2020/02/28 Javascript
vue 使用插槽分发内容操作示例【单个插槽、具名插槽、作用域插槽】
2020/03/06 Javascript
js实现百度登录窗口拖拽效果
2020/03/19 Javascript
vscode中Vue别名路径提示的实现
2020/07/31 Javascript
Vue使用screenfull实现全屏效果
2020/09/17 Javascript
Python产生一个数值范围内的不重复的随机数的实现方法
2019/08/21 Python
python 字符串常用函数详解
2019/09/11 Python
利用python、tensorflow、opencv、pyqt5实现人脸实时签到系统
2019/09/25 Python
如何在sublime编辑器中安装python
2020/05/20 Python
python安装mysql的依赖包mysql-python操作
2021/01/01 Python
深入探究HTML5的History API
2015/07/09 HTML / CSS
命名空间(namespace)和程序集(Assembly)有什么区别
2015/09/25 面试题
介绍一下Linux内核的排队自旋锁
2014/01/04 面试题
50岁生日感言
2014/01/23 职场文书
幼儿教师考核制度
2014/01/25 职场文书
大学军训感言400字
2014/03/11 职场文书
乡镇网格化管理实施方案
2014/03/23 职场文书
十佳中学生事迹材料
2014/06/02 职场文书
网络销售员岗位职责
2015/04/11 职场文书