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 相关文章推荐
prototype1.4中文手册
Sep 22 Javascript
node在两个div之间移动,用ztree实现
Mar 06 Javascript
处理及遍历XML文档DOM元素属性及方法整理
Aug 23 Javascript
jQuery弹出层插件Lightbox_me使用指南
Apr 21 Javascript
Javascript编程之继承实例汇总
Nov 28 Javascript
jQuery实现的简单拖拽功能示例
Sep 13 Javascript
Angular2自定义分页组件
Apr 19 Javascript
利用javascript如何随机生成一定位数的密码
Sep 22 Javascript
对vue中methods互相调用的方法详解
Aug 30 Javascript
Element-UI踩坑之Pagination组件的使用
Oct 29 Javascript
js 判断当前时间是否处于某个一个时间段内
Sep 19 Javascript
layui动态渲染生成左侧3级菜单的方法(根据后台返回数据)
Sep 23 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的计数器程序
2006/10/09 PHP
PHP 引用文件技巧
2010/03/02 PHP
浅析虚拟主机服务器php fsockopen函数被禁用的解决办法
2013/08/07 PHP
PHP永久登录、记住我功能实现方法和安全做法
2015/04/27 PHP
使用Thinkphp框架开发移动端接口
2015/08/05 PHP
Yii中实现处理前后台登录的新方法
2015/12/28 PHP
PHP爬虫之百万级别知乎用户数据爬取与分析
2016/01/22 PHP
PHP排序算法之希尔排序(Shell Sort)实例分析
2018/04/20 PHP
JavaScript 编程引入命名空间的方法与代码
2007/08/13 Javascript
JavaScript 存在陷阱 删除某一区域所有节点
2010/05/10 Javascript
JQuery里选择超链接的实现代码
2011/05/22 Javascript
40款非常棒的jQuery 插件和制作教程(系列二)
2011/11/02 Javascript
jQuery中noConflict()用法实例分析
2015/02/08 Javascript
AngularJS入门教程之双向绑定详解
2016/08/18 Javascript
详解为Angular.js内置$http服务添加拦截器的方法
2016/12/20 Javascript
JS中使用gulp实现压缩文件及浏览器热加载功能
2017/07/12 Javascript
深入理解Vue 的钩子函数
2018/09/05 Javascript
详解nodejs 开发企业微信第三方应用入门教程
2019/03/12 NodeJs
什么时候不能在 Node.js 中使用 Lock Files
2019/06/24 Javascript
详解JavaScript之ES5的继承
2020/07/08 Javascript
python使用opencv进行人脸识别
2017/04/07 Python
python 把文件中的每一行以数组的元素放入数组中的方法
2018/04/29 Python
Python开发最牛逼的IDE——pycharm
2018/08/01 Python
Django Rest framework认证组件详细用法
2019/07/25 Python
python matplotlib模块基本图形绘制方法小结【直线,曲线,直方图,饼图等】
2020/04/26 Python
在Sublime Editor中配置Python环境的详细教程
2020/05/03 Python
浅谈keras中自定义二分类任务评价指标metrics的方法以及代码
2020/06/11 Python
安装并免费使用Pycharm专业版(学生/教师)
2020/09/24 Python
如何在scrapy中集成selenium爬取网页的方法
2020/11/18 Python
canvas实现高阶贝塞尔曲线(N阶贝塞尔曲线生成器)
2018/01/10 HTML / CSS
英国文具、办公用品和科技商店:Ryman
2018/09/27 全球购物
硕士研究生求职自荐信范文
2014/03/11 职场文书
项目投资建议书
2014/05/16 职场文书
KTV员工管理制度
2015/08/06 职场文书
Redis实现一个账号只能登录一个设备
2022/04/19 Redis
SQL解决未能删除约束问题drop constraint
2022/05/30 SQL Server