1.使用正则的test、exec方法而且带有g属性进行连续匹配的时候, 如果每次匹配之前 lastIndex属性没有清零。

  <script>
var str='123qweQWE125|2q3qw 3aa!*&%#)';
var re=new RegExp("2",'g');
for(var i=0;i<10;i++){
console.log(re.test(str)+' '+re.lastIndex);
}
</script>

可以看到每次匹配都是从上次匹配结束的位置开始,匹配完后,下次会从头开始匹配。如果没有g属性,则每次都是从头开始匹配。

2.正则表达式字面量和使用构造函数共享RegExp实例的问题

  <script>
var re = null,i;
for (i=0;i<10;i++){
re = /cat/g;
console.log(re.test('catastronphe')+" "+re.lastIndex);
}
for (i=0;i<10;i++){
re = new RegExp('cat','g');
console.log(re.test('catastronphe')+" "+re.lastIndex);
}
</script>

高程上说使用正则表达式字面量和使用RegExp构造函数创建的正则表达式不一样。在ECMAScript 3中,正则表达式字面量始终会共享同一个RegExp实例,而

使用构造函数创建的每一个新RegExp实例都是一个新实例。但是在ECMAScript 5中明确规定,使用正则表达式字面量必须像直接调用RegExp构造函数一样,

每次都创造新的RegExp实例,所以在chrome上都是一样的。

3.正则字面量和正则对象在匹配转义字符时的差别

    <script>
var str='123qweQWE125|2q3qw 3aa!*&%#)';
// var re=new RegExp("\\s",'g');
var re=/\s/g;
for(var i=0;i<10;i++){
console.log(re.exec(str)+' '+re.lastIndex);
}
</script>

代码中正则字面量和正则对象是等效的,但是正则对象内多了一个‘\’,我理解为正则对象内设置匹配时用双引号,说明是一个字符串,在使用中字符串会转换成正则

表达式时会去掉一层转义字符。

 4.使用匹配子选项

 <script>
var a='name=yanghaipin';
var b= a.match(/^(name)=(.+)/);
console.log(b);
</script>

使用小括号将子选项包起来,match返回的是一个数组,第一个是完整匹配到的字符串,剩下的分别是匹配到的子选项。

 5.使用(?:)(?=)

 <script>
var str='windows 10 is great';
var a=str.match(/windows (?=\d+)/);
var b=str.match(/windows (?:\d+)/);
var c=str.match(/windows (\d+)/);
alert(a);//windows
alert(b);//windows 10
alert(c);//windows 10,10
</script>

(?:)和(?=)都会作为匹配校验,但是前者会出现在匹配到的字符串里面,后者不会出现。

 5. 关于 exec 和 match 方法的区别

http://www.cnblogs.com/withasi/archive/2012/04/23/2466933.html

6 可以使用 $ 来匹配字匹配项

    var now = new Date().toLocaleDateString();
console.log(now);
var regdate=/^(\d{4})[/-](\d{1,2})[/-](\d{1,2})/;
console.log(now.match(regdate));
console.log(now.replace(regdate,"$1年$2月$3日"));

JavaScript 正则表达式相关理解的更多相关文章

  1. JavaScript正则表达式-相关的String对象方法

    match()方法 match(regExp); 使用指定的正则表达式来搜索字符串. 如果找到匹配字符串返回一个数组,否则返回null. 返回的数组包含两个属性:index和input. index是 ...

  2. JavaScript正则表达式,你真的知道?

    一.前言 粗浅的编写正则表达式,是造成性能瓶颈的主要原因.如下: var reg1 = /(A+A+)+B/; var reg2 = /AA+B/; 上述两个正则表达式,匹配效果是一样的,但是,效率就 ...

  3. javascript正则表达式语法

    1. 正则表达式规则 1.1 普通字符 字母.数字.汉字.下划线.以及后边章节中没有特殊定义的标点符号,都是"普通字符".表达式中的普通字符,在匹配一个字符串的时候,匹配与之相同的 ...

  4. javascript正则表达式 - 学习笔记

    JavaScript 正则表达式 学习笔记 标签(空格分隔): 基础 JavaScript 正则表达式是用于匹配字符串中字符组合的模式.在javascript中,正则表达式也是对象.这些模式被用于Re ...

  5. 《JavaScript 正则表达式迷你书》知识点小抄本

    介绍 这周开始学习老姚大佬的<JavaScript 正则表达式迷你书> , 然后习惯性的看完一遍后,整理一下知识点,便于以后自己重新复习. 我个人觉得:自己整理下来的资料,对于知识重现,效 ...

  6. javascript正则表达式和字符串RegExp

    这篇文章主要介绍了javascript正则表达式和字符串RegExp and String(一)的相关资料,需要的朋友可以参考下     前言     正则表达式是javascript非常重要和常用的 ...

  7. javascript正则表达式入门先了解这些

    前言 此内容由学习<JavaScript正则表达式迷你书(1.1版)>整理而来(于2020年3月30日看完).此外还参考了MDN上关于Regex和String的相关内容,还有ECMAScr ...

  8. 理清JavaScript正则表达式--上篇

    在JavaScript中,正则表达式由RegExp对象表示.RegExp对象呢,又可以通过直接量和构造函数RegExp两种方式创建,分别如下: //直接量 var re = /pattern/[g | ...

  9. JavaScript 正则表达式上——基本语法

    定义 JavaScript种正则表达式有两种定义方式,定义一个匹配类似 <%XXX%> 的字符串 1. 构造函数 var reg=new RegExp('<%[^%>]+%&g ...

随机推荐

  1. ASP.NET MVC3 系列教程 - Razor视图引擎基础语法

    http://www.cnblogs.com/highend/archive/2011/04/09/aspnet_mvc3_razor_engine.html 4. 关于所有带"_" ...

  2. HDU-4720 Naive and Silly Muggles 圆的外心

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4720 先两两点之间枚举,如果不能找的最小的圆,那么求外心即可.. //STATUS:C++_AC_0M ...

  3. RabbitMQ (四) 路由选择 (Routing) -摘自网络

    本篇博客我们准备给日志系统添加新的特性,让日志接收者能够订阅部分消息.例如,我们可以仅仅将致命的错误写入日志文件,然而仍然在控制面板上打印出所有的其他类型的日志消息. 1.绑定(Bindings) 在 ...

  4. 详解HTTP中的摘要认证机制(转)

    Basic认证方式是存在很多缺陷的,具体表现如下: 1,  Basic认证会通过网络发送用户名和密码,并且是以base64的方式对用户名和密码进行简单的编码后发送的,而base64编码本身非常容易被解 ...

  5. 第八章、Linux 磁盘与文件系统管理

    认识 EXT2 文件系统 Linux最传统的磁盘文件系统(filesystem)使用的是EXT2这个啦!所以要了解文件系统就得要由认识EXT2开始! 而文件系统是创建在硬盘上面的,因此我们得了解硬盘的 ...

  6. 转载Agile Development 敏捷软件开发介绍

    转载原地址: http://blog.csdn.net/wayne_ran/article/details/1601008 敏捷开发(agile development)是一种以人为核心.迭代.循序渐 ...

  7. hdu 4781 Assignment For Princess (2013ACMICPC 成都站 A)

    http://acm.hdu.edu.cn/showproblem.php?pid=4781 由于题目太长,这里就不直接贴了,直接说大意吧. 题目大意:有一个n个点,m条边的有向图,每条边的权值分别为 ...

  8. VC的文件操作

    各种关于文件的操作在程序设计中是十分常见,如果能对其各种操作都了如指掌,就可以根据实际情况找到最佳的解决方案,从而在较短的时间内编写出高效的代码,因而熟练的掌握文件操作是十分重要的.本文将对Visua ...

  9. UdpClient的Connect究竟做了什么(转)

    最近在写一个音频通信的系统,因为需要还要处理其他事件,所以就自己设计底层的通信协议,用了不少底层的Socket编程(.Net Framework),搞清楚了不少细节问题. 先做一些铺垫工作.音频系统服 ...

  10. Autofac实例生命周期

    1.默认,每次请求都会返回一个实例 builder.RegisterType<X>().InstancePerDependency(); 2.Per Lifetime Scope:这个作用 ...