javascript正则表达式参数/g与/i及/gi的使用指南

 更新时间:2014年08月27日 11:34:09   投稿:hebedich  
正则表达式:是对字符串操作的一种逻辑公式,用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑

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"); //用一个单词替代两个单词.

相关文章

  • FullCalendar日历插件应用之数据展现(一)

    FullCalendar日历插件应用之数据展现(一)

    fullcalendar作为一个功能完善的日历插件使用非常广泛,在web开发开发过程 中非常流行。它与ext js 中的calendar非常类似,但考虑到extjs 比较“复杂庞大”,所以我在开发开发过程中都会优先考虑fullcalendar
    2015-12-12
  • javascript中的正则表达式使用详解

    javascript中的正则表达式使用详解

    之前讲了javascript对正则表达式的实现方式了,只定义了正则表达式,但是如何在javascript中真正使用正则表达式呢?在javascript中RegExp和String对象都有处理正则表达式的方法。
    2015-08-08
  • 浅谈Redux中间件的实践

    浅谈Redux中间件的实践

    这篇文章主要介绍了浅谈Redux中间件的实践,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-07-07
  • js eval木马代码,以后再分析吧

    js eval木马代码,以后再分析吧

    js eval木马代码,以后再分析吧...
    2007-03-03
  • js实现贪吃蛇游戏(简易版)

    js实现贪吃蛇游戏(简易版)

    这篇文章主要为大家详细介绍了js实现贪吃蛇游戏简易版,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-09-09
  • JavaScript涉及二进制的转换方式

    JavaScript涉及二进制的转换方式

    这篇文章主要介绍了JavaScript涉及二进制的转换方式,具有很好的 参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-06-06
  • 兼容IE,firefox的获取节点的文本值的javascript代码

    兼容IE,firefox的获取节点的文本值的javascript代码

    javascript获取节点的文本值,已经考虑了兼容性。大家可以放心使用。注意了这里的兼容没有使用innerText,如果要使用兼容innerText,请参考脚本之家以前发布的文章。
    2009-12-12
  • 浅聊一下TypeScript中的4种类型守卫

    浅聊一下TypeScript中的4种类型守卫

    类型守卫是TypeScript中特有的用于在运行时检查类型的方式,它显式的将javascript代码按类型划分,从而确保了运行安全,下面我们就来简单聊聊TypeScript中的4种类型守卫吧
    2023-08-08
  • 在微信小程序中使用iconfont的最新图文教程

    在微信小程序中使用iconfont的最新图文教程

    由于微信小程序线上的资源限制了各种接口安全域名,所以在小程序里如果想使用iconfont字体图标就会稍有不同,下面这篇文章主要给大家介绍了关于在微信小程序中使用iconfont的相关资料,需要的朋友可以参考下
    2022-08-08
  • JS跳过debugger的几种方法小结

    JS跳过debugger的几种方法小结

    本文主要介绍了JS跳过debugger的几种方法小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-07-07

最新评论