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);//windowsalert(b);//windows 10alert(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日"));
转载于:https://www.cnblogs.com/xueandsi/p/5970329.html
JavaScript 正则表达式相关理解相关推荐
- 《JavaScript 正则表达式迷你书》知识点小抄本
介绍 这周开始学习老姚大佬的<JavaScript 正则表达式迷你书> , 然后习惯性的看完一遍后,整理一下知识点,便于以后自己重新复习. 我个人觉得:自己整理下来的资料,对于知识重现,效 ...
- JavaScript 正则表达式 处理json,json对象的遍历和处理
//********* https://www.runoob.com/js/js-regexp.html ****// 正则表达式.exec( ) new RegExp("\\{" ...
- JavaScript正则表达式快速判断技巧
原文:JavaScript正则表达式快速判断技巧 这里是JS的正则的一点心得,并不是最完整的规则汇总,更侧重实际运用中的快速判断,初学者接触正则之后往往会被一堆星号括号给弄晕,有了一些速判技巧就能从整 ...
- javascript 正则表达式详解
正则表达式中的特殊字符 字符 含意 \ 做为转意,即通常在"\"后面的字符不按原来意义解释,如/b/匹配字符"b",当b前面加了反斜杆后/\b/,转意为匹配一个 ...
- JavaScript正则表达式笔记
正则表达式是一个描述字符模式的对象. JavaScript的RegExp对象和String对象定义了使用正则表达式来执行强大的模式匹配和文本检索与替换函数的方法. ''**************** ...
- js php 正则差别,JavaScript正则表达式的浏览器的差异
JavaScript中的正则表达式在不同的浏览器中得到的结果可能会有差异,下面把正则表达式在五大主流浏览器(IE.Firefox.Chrome.Safari.Opera,以当前版本为准)之间的差异整理 ...
- JavaScript正则表达式快速简单的指南
Interested in learning JavaScript? Get my ebook at jshandbook.com 有兴趣学习JavaScript吗? 在jshandbook.com上 ...
- 【Javascript】深入理解this作用域问题以及new/let/var/const对this作用域的影响
理解this作用域 <javascript高级程序设计>中有说到: this对象是在运行时基于函数的执行环境绑定的:在全局函数中,this等于window,而当函数被作为某个对象调用时,t ...
- javascript正则表达式复习
javascript的正则表达式复习 参考资源: w3cschool javascript regexp 菜鸟吧 javascript正则表达式 这里主要记录几个自己之前不是很熟悉的知识点,其他的知识 ...
最新文章
- Android百度地图scode,“androidsdk | 百度地图API SDK
- inline函数包涵static变量,调用时是否会有多份拷贝
- 干货 | 公众号历史文章精选(附资源)
- 《计算机应用基础》期末试卷.,《计算机应用基础》期末试卷(A卷)《计算机应用基础》期末试卷(A卷).doc...
- python程序怎么修改_详解Python文件修改的两种方式
- 动态规划经典题之年终奖
- css 图片自适应_img图片自适应object-fit
- 持续集成部署Jenkins工作笔记0014---curl命令触发构建
- tomcat 8.5 远程登录管理页面
- 设计模式(三)结构型模式
- 南天PR2 PR2E PR9 中航 PR-b PR-V PR-C PR-t PR-u PR-d GWI PR2 plus 打印机驱动安装视频教程
- 泊松回归模型matlab,matlab拟合泊松分布
- java bitset clean方法_BitSet实现原理及源码解析
- 计算机主机的声音线是哪个好,电脑显示器连接线哪种接口好|VGA、HDMI视频接口选哪个好...
- Mave概念及其配置
- 张朝阳开课手推E=mc²,李永乐现场狂做笔记!CEO当太久都忘了他是MIT物理博士
- python 打包命令以及使用方法
- 完美解决443端口被vmware占用的问题
- 设置vscode默认打开浏览器为谷歌
- springboot高校失物招领系统的设计与实现毕业设计源码121441
热门文章
- 复方丙酸氯倍他索软膏購買技巧
- toAppendStream doesn‘t support consuming update changes which is produced by node GroupAggregate
- 传递函数尾1法和首1法及具体举例+H(s)与H(z)在书中出现的目的
- flink中各种图的原理(还没搞完)
- linux英文系统+搜狗输入法
- 特征名类似情况下的列表的快速书写
- sublime,gedit,vim和mousepad等都出现fribidi_get_par_embedding_levels_ex
- 【数学基础】拉格朗日对偶
- html5在li中添加按钮,如何在html5blank_nav()中的ul和li中添加类?
- android的rgb转bitmap,Android: 格式为RGB_565的bitmap问题