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 (用setTimeout而非setInterval)
Dec 28 Javascript
jQuery CSS3相结合实现时钟插件
Jan 08 Javascript
实例讲解jquery中mouseleave和mouseout的区别
Feb 17 Javascript
关于Bootstrap弹出框无法调用问题的解决办法
Mar 10 Javascript
微信JS-SDK坐标位置如何转换为百度地图坐标
Jul 04 Javascript
jquery实现转盘抽奖功能
Jan 06 Javascript
使用JavaScript判断用户输入的是否为正整数(两种方法)
Feb 05 Javascript
详解使用webpack构建多页面应用
Dec 21 Javascript
Vue中的基础过渡动画及实现原理解析
Dec 04 Javascript
详解如何探测小程序返回到webview页面
May 14 Javascript
JavaScript使用localStorage存储数据
Sep 25 Javascript
JS时间戳与日期格式互相转换的简单方法示例
Jan 30 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实现域名whois查询的代码(数据源万网、新网)
2010/02/22 PHP
form表单传递数组数据、php脚本接收的实例
2017/02/09 PHP
php输出形式实例整理
2020/05/05 PHP
JQury slideToggle闪烁问题及解决办法
2011/07/05 Javascript
JS仿百度搜索自动提示框匹配查询功能
2013/11/21 Javascript
JS判断网页广告是否被浏览器拦截过滤的代码
2015/04/05 Javascript
javascript实现数字倒计时特效
2016/03/30 Javascript
jquery无法为动态生成的元素添加点击事件的解决方法(推荐)
2016/12/26 Javascript
JS实现上传图片的三种方法并实现预览图片功能
2017/07/14 Javascript
微信小程序中使用Promise进行异步流程处理的实例详解
2017/08/17 Javascript
vue实现简单的MVVM框架
2018/08/05 Javascript
vue中实现动态生成二维码的方法
2020/02/21 Javascript
jQuery实现移动端图片上传预览组件的方法分析
2020/05/01 jQuery
Angular利用HTTP POST下载流文件的步骤记录
2020/07/26 Javascript
在Python中操作日期和时间之gmtime()方法的使用
2015/05/22 Python
八大排序算法的Python实现
2021/01/28 Python
Python中函数参数设置及使用的学习笔记
2016/05/03 Python
Python基础之getpass模块详细介绍
2017/08/10 Python
Python进度条实时显示处理进度的示例代码
2018/01/30 Python
python爬取m3u8连接的视频
2018/02/28 Python
Python实现的简单读写csv文件操作示例
2018/07/12 Python
python实现根据文件关键字进行切分为多个文件的示例
2018/12/10 Python
python3使用pandas获取股票数据的方法
2018/12/22 Python
python的slice notation的特殊用法详解
2019/12/27 Python
Python HTTP下载文件并显示下载进度条功能的实现
2020/04/02 Python
如何使用PyCharm将代码上传到GitHub上(图文详解)
2020/04/27 Python
python网络编程之五子棋游戏
2020/05/14 Python
Python pandas如何向excel添加数据
2020/05/22 Python
Django QuerySet查询集原理及代码实例
2020/06/13 Python
html5 利用canvas实现超级玛丽简单动画
2013/09/06 HTML / CSS
职业规划书如何设计?
2014/01/09 职场文书
产品质量承诺书范文
2014/03/27 职场文书
公司合作意向书
2014/04/01 职场文书
学校节能减排方案
2014/06/13 职场文书
2014班子“三严三实”对照检查材料思想汇报
2014/09/18 职场文书
解决redis批量删除key值的问题
2022/03/23 Redis