猿问

正则匹配出undefined

'1234567'.match(/()|/)

// ["", ""]


'1234567'.match(/|()/)

// ["", undefined]


'1234567'.match(/()|()/)

// ["", "", undefined]


'1234567'.match(/(.*)|(.*)/)

// ["1234567", "1234567", undefined]

求解释为什么匹配出来的有undefined而不是单纯的空串?

chrome浏览器,版本 54.0.2840.99 m


慕雪6442864
浏览 1440回答 2
2回答

函数式编程

/|()/ |左边命中'',分支结束,右边()未执行,所以是undefinedstr.match 返回数组 arrarr[0]是整个表达式命中的内容arr[1]是分组1命中的内容,以此类推~["", undefined] //"" 是整个表达式命中的内容,undefined 是 因为 ()未执行。楼主还没想通吗?'1234567'.match(/|()()()/) ["", undefined, undefined, undefined]'1234567'.match(/()()()|/) ["", "", "", ""]仔细体会一下分组个数与 数组元素的对应关系。
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答