[ js ] 正规表达式 exec 跟 match 的差异

楼主: art1 (人,原来不是人)   2017-06-11 00:20:24
在 http://regexr.com/ 网站练习正规表达式时很方便,开始用 js 测试时就傻了
一开始用 exec,结果想要的结果永远只传回第一笔,明明有加 gm 选项了
想说改用 match 看看,这次可以得到想要的笔数了,但没仔细确认阵列内容
之后上网查两个的差异,再比对两个阵列的内容有什么地方不一样
才发现 exec 只会传回一笔结果,但当正规表达式的规则内有用到 () 分组时,
exec 传回的结果才会保留 () 分组的资料,而 match 只会传回相符的文字
所以会用到分组内的资料且需要比对多次时,须使用 exec 搭配循环来获得所有结果
作者: LPH66 (-6.2598534e+18f)   2017-06-11 14:43:00
嗯...match 如果用没有 /g 的 RegExp 回传的跟 exec 一样喔不过因为 exec 是 RegExp 的函数, 它可以去更改这个 RegExp的 lastIndex 属性, 所以才能在有 /g 之下用循环全部抓出也因为这样, 属于字串的 match 函数不能动属性只好一次回传match 是 Javascript 的四个 RegExp 比对函式里有没有 /g 结果差很多的一个; RegExp 的两个有没有 /g 就是能不能进行多笔比对, 剩下那一个则是没差
作者: s25g5d4 (function(){})()   2017-06-12 02:08:00
在这里也能见到 LPH66 大大

Links booklink

Contact Us: admin [ a t ] ucptt.com