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 相关文章推荐
两个SUBMIT按钮,如何区分处理
Aug 22 Javascript
jquery插件制作 图片走廊 gallery
Aug 17 Javascript
addEventListener()第三个参数useCapture (Boolean)详细解析
Nov 07 Javascript
理解javascript中的原型和原型链
Jul 30 Javascript
jquery拖拽排序简单实现方法(效果增强版)
Feb 16 Javascript
拥有一个属于自己的javascript表单验证插件
Mar 24 Javascript
JS 数字转换为大写金额的简单实例
Aug 04 Javascript
javascript 判断是否是微信浏览器的方法
Oct 09 Javascript
原生js图片轮播效果实现代码
Oct 19 Javascript
AngularJS中isolate scope的用法分析
Nov 22 Javascript
Node.JS 循环递归复制文件夹目录及其子文件夹下的所有文件
Sep 18 Javascript
JavaScript适配器模式原理与用法实例详解
Mar 09 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
外媒评选出10支2020年最受欢迎的Dota2战队
2021/03/05 DOTA
PHP循环获取GET和POST值的代码
2008/04/09 PHP
优化php效率,提高php性能的一些方法
2011/03/24 PHP
php数字转汉字代码(算法)
2011/10/08 PHP
PHP实现ftp上传文件示例
2014/08/21 PHP
学习php设计模式 php实现模板方法模式
2015/12/08 PHP
JQuery控制Radio选中方法分析
2015/05/29 Javascript
Javascript实现的简单右键菜单类
2015/09/23 Javascript
理解Angular数据双向绑定
2016/01/10 Javascript
javascript实现简单计算器效果【推荐】
2016/04/19 Javascript
跨域请求的完美解决方法(JSONP, CORS)
2016/06/12 Javascript
JavaScript结合HTML DOM实现联动菜单
2017/04/05 Javascript
详解Vue-axios 设置请求头问题
2018/12/06 Javascript
layui复选框限制选择个数的方法
2019/09/18 Javascript
微信小程序wxml列表渲染原理解析
2019/11/27 Javascript
vue中的计算属性和侦听属性
2020/11/06 Javascript
python解决字典中的值是列表问题的方法
2013/03/04 Python
使用python绘制人人网好友关系图示例
2014/04/01 Python
Python字符串格式化的方法(两种)
2017/09/19 Python
简单实现python画圆功能
2018/01/25 Python
django的登录注册系统的示例代码
2018/05/14 Python
Python爬虫包BeautifulSoup实例(三)
2018/06/17 Python
使用Numpy读取CSV文件,并进行行列删除的操作方法
2018/07/04 Python
tensorflow实现tensor中满足某一条件的数值取出组成新的tensor
2020/01/04 Python
Python求两个字符串最长公共子序列代码实例
2020/03/05 Python
你应该知道的30个css选择器
2014/03/19 HTML / CSS
公积金转移接收函
2014/01/11 职场文书
代理商会议邀请函
2014/01/27 职场文书
40岁生日感言
2014/02/15 职场文书
歌唱比赛策划方案
2014/06/06 职场文书
警察群众路线对照检查材料思想汇报
2014/10/01 职场文书
总经理2015中秋节致辞
2015/07/29 职场文书
《我们的民族小学》教学反思
2016/02/19 职场文书
Python3 使用pip安装git并获取Yahoo金融数据的操作
2021/04/08 Python
Idea连接MySQL数据库出现中文乱码的问题
2021/04/14 MySQL
一文读懂navicat for mysql基础知识
2021/05/31 MySQL