《javascript权威指南》正则式match和exec方法解析

1. 这两个方法,如果匹配成功,
【菜科解读】
最近看了《javascript权威指南》里面的正则部分,match和exec方法有一些相同点和不同点,在这里写一下加深一下印象。
1. 这两个方法,如果匹配成功,返回一个数组,匹配失败,返回null。
2. 当RegExp的global属性为false时,这两个方法的返回数组是一样的。
数组的第0个元素是整个pattern的第一个匹配字符串,接下来的元素是pattern第一个匹配中的子匹配字符串。
此外,数组还有index和input两个额外属性,index是匹配字符串的起始位置,input是整个输入字符串。
此时,RegExp的lastIndex属性一直是0。
console.log('match_array: ' + JSON.stringify(rm)); console.log('match_array_index: ' + rm.index); console.log('match_array_input: ' + rm.input); console.log('----------------------------'); console.log('exec_array: ' + JSON.stringify(re)); console.log('exec_array_index: ' + re.index); console.log('exec_array_input: ' + re.input);
显示结果为(firefox控制台):
match_array: ["this","i"]match_array_index: 0match_array_input: this is a string----------------------------exec_array: ["this","i"]exec_array_index: 0exec_array_input: this is a string
3. 当RegExp的global属性为true时,返回的数组是不同的。
match方法返回的数组包含着所有匹配字符串,没有子匹配字符串和额外属性。
此时,lastIndex属性无效。
exec方法返回的数组格式与global为false时一样,只是此时RegExp的lastIndex属性有效,匹配是从lastIndex所指示的字符开始的,并且方法执行后会将lastIndex置为本次匹配字符串的下一个字符处,所以循环执行exec方法时会依次匹配整个字符串,直到字符串最后返回null,并将lastIndex置0。
demo:
var s = 'this is a string'; var p = /\b\w*(i)s\b/g; var rm = s.match(p); var re; console.log('match_array: ' + JSON.stringify(rm)); console.log('match_array_index: ' + rm.index); console.log('match_array_input: ' + rm.input); while(re = p.exec(s)){ console.log('----------------------------'); console.log('exec_array: ' + JSON.stringify(re)); console.log('exec_array_index: ' + re.index); console.log('exec_array_input: ' + re.input); console.log('regexp_lastIndex: ' + p.lastIndex); console.log('----------------------------'); console.log('exec_array: ' + re); console.log('regexp_lastIndex: ' + p.lastIndex);
结果:
match_array: ["this","is"]match_array_index: undefinedmatch_array_input: undefined----------------------------exec_array: ["this","i"]exec_array_index: 0exec_array_input: this is a stringregexp_lastIndex: 4----------------------------exec_array: ["is","i"]exec_array_index: 5exec_array_input: this is a stringregexp_lastIndex: 7----------------------------exec_array: nullregexp_lastIndex: 0
综上:
在没有g标识符时,match和exec方法效果是一样的;有g标识符时,exec方法可以提供最完整的匹配结果。
这里顺便提一下RegExp.test()方法,它是exec方法的简化版,有匹配结果就返回true,没有匹配结果就返回false,执行过程与exec是一样的。
相当于 (p.exec(s) != null)。
RegExp的lastIndex属性在有g标识符,且在exec和test方法中是有效的,其他地方是无效的。
《,javascript权威指南,》,正则,式,match,《后宫·甄嬛传》中的浣碧真有历史原型吗?是清朝的哪个人
通过查阅史料,发现历史上的允礼确实有一位姓的福晋,她就是果亲王允礼嫡福晋钮祜禄氏,即浣碧的历史原型。
从出身来看,允礼嫡福晋钮祜禄氏绝对是一种皇后级别的标准了,她来自钮祜禄家族中最显赫的弘毅公一门,祖父是初年的辅政大臣、太师,父亲阿灵阿是遏必隆第七子,同时也是允礼的老师,姑姑则是康熙第二任妻子孝昭皇后。
而且,从母系来看,钮祜禄氏也是无与伦比的。
钮祜禄氏的母亲是(帝生母)的亲妹妹乌雅氏,也就是说,雍正帝是钮祜禄氏的表哥。
不过,他们一家却也有派系之别,因为钮祜禄氏的父亲阿灵阿属于八爷党,而钮祜禄氏的丈夫允礼则属于四爷党。
钮祜禄氏的父亲阿灵阿是康熙非常器重的一位大臣,他于康熙四十年被提拔为领侍卫内大臣,后又兼任理藩院尚书,统领火器营。
阿灵阿曾在康熙四十七年举荐八阿哥为皇太子,受到了四阿哥(雍正帝)的忌恨,雍正帝继位后,虽然阿灵阿已经去世,但雍正帝仍然没有放过他们一家,在他的墓碑上面刻上了“不臣不弟暴悍贪庸阿灵阿之墓”,并将阿灵阿儿子阿尔松阿的家产籍没,妻子发往为奴。
不过,雍正帝对阿灵阿的女婿,即康熙第十七子允礼却非常器重,雍正元年即将允礼封为果郡王,雍正六年晋封为果亲王。
雍正八年怡亲王允祥去世,允礼接替了允祥的位子,总管户部三库,并掌管宗人府事务,成为的“首辅”式人物,这一切都说明了允礼其实一直一个隐藏在暗处的“四爷党”。
关于允礼的福晋,史料记载他有两位福晋,嫡福晋即阿灵阿之女钮祜禄氏,侧福晋是达色之女,不过史料却显示只有侧福晋孟氏给允礼生下了一子一女,并都早夭,难道允礼与嫡福晋钮祜禄氏的夫妻关系不好吗? 其实并不是这样的。
允礼生于康熙三十六年,他与钮祜禄氏成婚大概在康熙五十年左右,然而,史料显示钮祜禄氏在雍正七年做了一年果亲王嫡妃后便去世了,估计年龄应该在30岁左右。
因此,允礼嫡福晋钮祜禄氏很有可能身体一直不是很好,这也在一定程度上影响到了她的生育。
而且,在嫡福晋钮祜禄氏去世之后,侧福晋孟氏才给允礼生下了一子一女,这恰好说明允礼对钮祜禄氏是十分专情的,只可惜天妒红颜,这位亲王福晋却只活了30岁,不得不令人叹惋呀! 随机文章北伐失败!诸葛亮临终前叹:当初没杀他就好了!美国NASA承认外星人存在,NASA的秘密档案公布外星飞行器北极是陆地还是海洋,是被冰川覆盖的海洋(生活有900种植物)已灭绝的十大巨怪图片,碳龟头比足球场还大/身子是普通汽车的2倍流川枫和樱木花道的关系,情敌冤家也是朋友/最后的击掌是最完美的结局
《三国演义》中三姓家奴吕布和关羽使用的武器是真是假?在正史中有吗
但故事终究是故事,是无法经过论证的,比如《三国演义》中几位武将的兵器,就被作者罗贯中弄虚作假,有的穿越时空,有的移花接木,靠谱的还真的没有几个,完全可以被称呼为"伪兵器"! 《三国演义》中能被称呼为第一"伪兵器"的,便是关羽的刀!书中描写关羽使用的兵器是青龙偃月刀,重达80斤,可是以三国时期的冶炼技术,根本打造不出这样的兵器。
刀,在隋唐之后才开始发展起来,最有名的便是唐刀,第一把青龙偃月刀是在才出现。
而真实历史上关羽使用的是什么兵器呢?根据《》记载,当时武将最常用的兵器是"矛",所以关羽使用的兵器也是矛。
第二个被吹嘘最严重的就是吕布的方天画戟,作为《三国演义》中武力值最强大的武将,罗贯中几乎给它赋予了无敌的属性,尤其是方天画戟,更是被视为武力值的象征。
其实历史上吕布的兵器并不是戟,跟关羽相同,使用的长兵器也是矛,虽然也有过几次用戟的经历,但使用的是手戟,跟方天画戟完全搭不上边。
不过三国时期也有使用戟的武将,他就是手下的猛将,只不过被罗贯中移花接木到了吕布身上而已。
虽然罗贯中在《三国演义》中使用了很多伪兵器,但也有比较靠谱的兵器,比如说使用的弓,使用的矛,还有使用的枪,这几件兵器都比较接近历史事实。
比如黄忠最常使用的武器是军中配备的制式弓箭,这一点基本没有什么串改,但肯定没有八宝麒麟弓这么夸张。
张飞使用的兵器被称为"丈八蛇矛",其实就是长矛,只不过矛头像蛇一样弯弯曲曲,这种长矛中三国其实可能确实存在,因为根据《两晋秘史》中记载,这种矛长约一丈八寸,折合现在的尺寸大约是4米多,东晋时期的陈安就曾经使用过这样的兵器。
不过三国时期张飞在使用的时候,这种矛还没有被命名而已。
无论在《三国志》还是《资治通鉴》这些史书中,只准确地记录了张飞的兵器就是"矛",矛也是三国时期武将手中比较流行的武器,像关羽、、、等人都曾经使用过。
至于赵云的枪则比较有争议,因为枪在时期确实已经作为一种制式兵器存在过,所以赵云的兵器是枪的可能性也比较大,只不过究竟叫什么名字,就无法查证了! 随机文章汉武帝手下李陵逞凶斗狠埃及法洛斯灯塔历史价值,世界最高的便民工程(400米)阿帕奇战斗机杀伤力惊人,海湾战争中摧毁500辆坦克美国NASA承认外星人存在,NASA的秘密档案公布外星飞行器华盛顿合作定律是什么,纽约谋杀案真实体现/国际版三个和尚