JavaScript 正则表达式相关理解
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 正则表达式相关理解的更多相关文章
- JavaScript正则表达式-相关的String对象方法
match()方法 match(regExp); 使用指定的正则表达式来搜索字符串. 如果找到匹配字符串返回一个数组,否则返回null. 返回的数组包含两个属性:index和input. index是 ...
- JavaScript正则表达式,你真的知道?
一.前言 粗浅的编写正则表达式,是造成性能瓶颈的主要原因.如下: var reg1 = /(A+A+)+B/; var reg2 = /AA+B/; 上述两个正则表达式,匹配效果是一样的,但是,效率就 ...
- javascript正则表达式语法
1. 正则表达式规则 1.1 普通字符 字母.数字.汉字.下划线.以及后边章节中没有特殊定义的标点符号,都是"普通字符".表达式中的普通字符,在匹配一个字符串的时候,匹配与之相同的 ...
- javascript正则表达式 - 学习笔记
JavaScript 正则表达式 学习笔记 标签(空格分隔): 基础 JavaScript 正则表达式是用于匹配字符串中字符组合的模式.在javascript中,正则表达式也是对象.这些模式被用于Re ...
- 《JavaScript 正则表达式迷你书》知识点小抄本
介绍 这周开始学习老姚大佬的<JavaScript 正则表达式迷你书> , 然后习惯性的看完一遍后,整理一下知识点,便于以后自己重新复习. 我个人觉得:自己整理下来的资料,对于知识重现,效 ...
- javascript正则表达式和字符串RegExp
这篇文章主要介绍了javascript正则表达式和字符串RegExp and String(一)的相关资料,需要的朋友可以参考下 前言 正则表达式是javascript非常重要和常用的 ...
- javascript正则表达式入门先了解这些
前言 此内容由学习<JavaScript正则表达式迷你书(1.1版)>整理而来(于2020年3月30日看完).此外还参考了MDN上关于Regex和String的相关内容,还有ECMAScr ...
- 理清JavaScript正则表达式--上篇
在JavaScript中,正则表达式由RegExp对象表示.RegExp对象呢,又可以通过直接量和构造函数RegExp两种方式创建,分别如下: //直接量 var re = /pattern/[g | ...
- JavaScript 正则表达式上——基本语法
定义 JavaScript种正则表达式有两种定义方式,定义一个匹配类似 <%XXX%> 的字符串 1. 构造函数 var reg=new RegExp('<%[^%>]+%&g ...
随机推荐
- 关于C++ vector的拷贝
定义了vector变量,在使用时直接用了等号赋值,后来发现有问题,就查了一下vector怎么赋值? 说明:vector是一个构造对象,不能直接使用=符号进行复制,必须迭代每个元素来复制.或者重载=操作 ...
- Emacs和它的朋友们——阅读源代码篇(转)
正如那本<Code Reading>一书中指出的那样,源代码阅读一直没有被很好的重 视:你上大学的时候有“代码阅读”这门课吗?相信没有. 1 Source Insight 谈到阅读源代码, ...
- 第二百六十一、二天 how can I坚持
昨天在家宅了一天,晚上去看了个电影<寻龙诀>,感觉一般,虽然有黄渤.舒淇.十分打7分吧,画面倒是很震撼. 今天,去了趟东升八家郊野公园,想买个篮球玩玩来,可是超市里的太坑了,都是赠品还拿出 ...
- Android问题-No resource found that matches the given name (at 'theme' with value '@style/CaptureTheme').
问题现象:在看一个实例中写到的,提示如下: [PAClient Error] Error: E2312 C:\Users\zhujq-a\Desktop\Android实例之实现扫描二维码并生成二维码 ...
- CodeForces 689B Mike and Shortcuts (bfs or 最短路)
Mike and Shortcuts 题目链接: http://acm.hust.edu.cn/vjudge/contest/121333#problem/F Description Recently ...
- Java IO (2) - OutputStream
Java IO (2) - OutputStream 前言 JavaIO一共包括两种,一种是stream,一种是reader/writer,每种又包括in/out,所以一共是四种包.Java 流在处理 ...
- 转载 JQuery中attr属性和JQuery.data()学习
转载原地址: http://www.cnblogs.com/yeminglong/p/5405745.html 用html直接data-key来存放,key必须全部小写. <div data-m ...
- UVA 624 - CD (01背包 + 打印物品)
题目链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem ...
- MVC基本学习
asp.net MVC ViewData详解 http://www.cnblogs.com/gaopin/archive/2012/11/13/2767515.html Asp.net MVC中的Vi ...
- java连接数据库的解决方法大全(mysql)
解决方法一:(最重要的一种方法) 你看下my.ini,有无 [mysql] default-character-set=utf8 [client] default-character-set=ut ...