闲得蛋疼玩String.prototype.split方法
JavaScript中字符串的split方法大家经常用吧?例如将逗号分隔的字符串分解为数组:
"a,b,c".split(","); // ["a", "b", "c"]"a\nb\r\nc\rd".split(/\r?\n/); // 通吃IE和Opera的\r\n,以及FF、Chrome、Safari的\n
"01-23-45-67-89-ab".split(/-|:/);
// 先试试2个2个匹配"0123456789ab".split(/../); // ["", "", "", "", "", "", ""]// 嗯。。。有问题,需要保留匹配项,加上括号分组"0123456789ab".split(/(..)/);// ["", "01", "", "23", "", "45", "", "67", "", "89", "", "ab", ""]// 前后的空字串也被分解了,看来不能从头开始匹配,用前置预匹配"0123456789ab".split(/(?<=(?:..)(..))/); // SyntaxError: Invalid regular expression: /(?<=(?:..)(..))/: Invalid group// 呃。。看来不支持前置预匹配,换后置的"0123456789ab".split(/(?=(?:..)+)$/); // ["0123456789ab"]// 嗯?完全没分解,哦,结束符被匹配上了,把它放到预匹配中去"0123456789ab".split(/(?=(?:..)+$)/); // ["01", "23", "45", "67", "89", "ab"]// :) 大功告成!
"200100004136e378800063bf3ffffdd2".split(/(?=(?:.{4})+$)/);// ["2001", "0000", "4136", "e378", "8000", "63bf", "3fff", "fdd2"]"200100004136e378800063bf3ffffd".split(/(?=(?:.{4})+$)/);// ["20", "0100", "0041", "36e3", "7880", "0063", "bf3f", "fffd"]"200100004136e378800063bf3ffffd".split(__?__);// ["2001", "0000", "4136", "e378", "8000", "63bf", "3fff", "fd"]
想不出来了,有解么?