《JS高程》中的正则的复杂模式的总结

复杂模式:

*分组:

var reDogDog=/dogdog/g;---------------var reDogDog=/(dog){2}/g;

*引用:(注意带括号和不带括号)

var sMatch="#123456789";
var reNum=/(#(\d+))/;
reNum.test(sMatch);
alert(RegExp.$1+" "+RegExp.$2);

var sChange="1234 5678";
var reMatch=/(\d{4})  (\d{4})/;//注意中间要加空格
var newStr=sChange.replace(reMatch,"$2 $1");//不是“RegExp.$2  RegExp.$1”

alert(RegExp.$1+" "+RegExp.$2);//注意此行是输出:1234 5678,有种把上面的正则给覆盖的感觉(深入的机制不清楚)
alert(sChange+" "+newStr);

*候选:管道符  |

var s1="red";
var s2="blue";
var reS1S2=/(red|blue)/;
alert(reS1S2.test(s1));
alert(reS1S2.test(s2));

*非捕获性分组

var sToMatch="#123456789";

var reNumbers=/#(?:\d+)/;

reNumbers.test(sToMatch);

alert(RegExp.$1);//输出“ ”,因为该分组是非捕获性的

*前瞻

var sToMatch1="bedroom";
var sToMatch2="bedding";
var reBed=/(bed(?=room))/;
alert(reBed.test(sToMatch1));
alert(RegExp.$1);
alert(reBed.test(sToMatch2));

结果:true bed false

*边界:^行开头   $行结尾    \b单词的边界    \B非单词的边界

var sToMatch="Important word is the last one.";
var reLastWord=/(\w+).$/;
reLastWord.test(sToMatch);
alert(RegExp.$1);

*多行模式(下面的例子觉得有问题,去掉g,结果不是我想的那样)

var sToMatch="First second\nthird fourth\nfifth sixth";
var reLastWordOnLine=/(\w+)$/g;
var arrWords=sToMatch.match(reLastWordOnLine);
alert(arrWords);

时间: 2024-11-05 11:28:57

《JS高程》中的正则的复杂模式的总结的相关文章

JS高程中的垃圾回收机制与常见内存泄露的解决方法

起因是因为想了解闭包的内存泄露机制,然后想起<js高级程序设计>中有关于垃圾回收机制的解析,之前没有很懂,过一年回头再看就懂了,写篇博客与大家分享一下. #内存的生命周期: 分配你所需要的内存: 由于字符串.对象等没有固定的大小,js程序在每次创建字符串.对象的时候,程序都会分配内存来存储那个实体. 使用分配到的内存做点什么. 不需要时将其释放回归: 在不需要字符串.对象的时候,需要释放其所占用的内存,否则将会消耗完系统中所有可用的内存,造成系统崩溃,这就是垃圾回收机制所存在的意义. 所谓的内

JS代码中踩过的坑

2018年8月1日  广州 这几天在学JS基础语句,练习中出现一些错误,开始往往都不知道问题出在哪.调试代码找错误往往最费时间,所以告诉自己拿到一个题,最好先拿出纸笔,仔细想想命题实现的逻辑,在纸上简单写粗略的代码,大致验证下逻辑.这样避免在机上修改代码更好,因为代码里语句和变量改来改去,总会遗漏,或者错删了什么符号导致本来对的逻辑硬是没有结果输出. 告诉自己,刚开始把命题实现的条件在纸上罗列出来,并且用简单代码在纸上写下大概代码,输值验证下,然后输入电脑能实现出来以后,再重新思考优化方案.大致

java 和 JS(javaScript)中的反斜杠正则转义

首先说下为什么要转义.在正则中有些字符有特殊含义的,比方说 * 可以前一子表达式的任意次,. 表示除"\r\n"之外的任何单个字符,+ 表示前一子表达式的一次或多次,等.而在有些情况下,需要正则验证这些字符,比方说要验证加减乘除四个运算符号,为了告诉编译器,你要验证的是一个字符而不是正则表达式,就要对这些有特殊含义的字符进行转义,这样就有了转义这一操作. 在java 和javascipt中,都是用反斜杠"\"进行转义,然后两种语言的用法不尽相同,下面举例说明: 1.

node.js项目中使用coffeescript的方式汇总

Coffeescript作为Javascript低调的小弟实在是有过人之处,使用它可以增进开发效率,减少代码错误, 关键是能大幅提升开发愉悦感.我越来越觉得只要可能就在自己的项目中把coffee用起来. 然而也许你和我一样,在了解完coffeescript的语法后准备一试身手的时候,却面对如何把它引入项目而犯起愁来. 其实coffeescript这种语言因其可以一对一地翻译为javascript的特性,使用起来其实非常灵活. 将其引入项目的方式也不止一个.这里,我先就node项目引入coffee

extjs4.1 和struts2结合使用时延迟加载js,可使用extjs的mvc模式

直奔主题,在前台我们点击左边的菜单会先打开一个tab页,希望将请求的页面放到新打开的tab页上面:关键代码如下: tabPanel.add({ id: id, title: title, closable: true, autoScroll: true, layout: 'fit', loader: { scripts: true, autoLoad: true, params: params, url: url } }); 传统的方法是在tab里面嵌入一个iframe,然后在里面嵌入一个独立的

java中关于正则一些基础使用

这是本人的第一篇技术型博客,希望能帮到有需要的朋友.-----转载请注明出处. 在之前工作中,需要对很多字符串进行处理.我现在记录下来,以免以后遗忘. 对于正则处理相关的知识,我一开始是从网上找资料配合使用Java API1.6的一个中文版进行学习,很感谢翻译这个版本的团队(机构)或者个人,很感谢那些无私分享自己的知识的朋友. 下文中对于正则的相关知识,现在我是从oracle提供的最新的Java API,可能和以前我看得1.6有些出入,贴出API地址:http://docs.oracle.com

《JS高程》事件学习笔记

事件:文档或浏览器窗口中发生的一些特定的交互瞬间,也即用户或浏览器自身执行的某种动作. ------------------------------------------------------------------------------------------------------------- 一.事件流 事件流:描述的是页面中接收事件的顺序. IE:事件冒泡流,即事件开始时由最具体的元素接收,然后逐级向上传播到较为不具体的节点(文档): NetScape:事件捕获流,即不太具体的节

编写高质量JS代码中

2.使用函数 函数给程序员提供了主要的抽象功能,又提供实现机制.函数可以独立实现其他语言中的多个不同的特性,例如,过程.方法.构造函数,甚至类或模块. 2.1 理解函数调用.方法调用以及构造函数调用之间的不同 针对面向对象编程,函数.方法和类的构造函数是三种不同的概念. 使用模式:1,函数调用 function hello(username){ return "hello" + username; } 2,方法调用 var obj = { hello : function(){ ret

统计js数组中奇数元素的个数

如何统计一个JS数组中奇数元素的个数呢? 这是群友提出的一个问题,大部分群友给出的是遍历 然后对2取模,得到最终结果. 这样的写法是最容易想得到的,那么有没有其他思路呢? 这里我提供另外一种思路,我们知道奇数其实就是以 1 3 5 7 9 作为末尾结尾的数字,那么只要统计这些数字出现的次数就够了,但是光这样统计容易误算,所以我们可以先用逗号拼接起来,连着逗号一起计算,由于js没有php那么方便的能用substr_count 函数统计字符串出现次数,所以我们直接采用正则替换,计算长度差得到个数,代