拆分字符串并在javascript plus条件中保留分隔符

时间:2014-04-03 22:16:51

标签: javascript regex split

我需要javascript中的一个方法,用分隔符FF分割字符串,这几乎总是跟着另一个任何(F0,F1,FA,FB,FC,FD,FE)或者在某些小的情况下0001。最终的数组需要如下所示:

var string = 'FFFC18FFFC20FFFC23FFFC27';
'FFFC18FFFC20FFFC23FFFC27'
var array = string.split(regex);
['FFFC18','FFFC20','FFFC23','FFFC27']

最终,一个元素可能少于8个字符,如下例所示:

var string = 'FFFA2701FFF0FFFA1801FFF0';
'FFFA2701FFF0FFFA1801FFF0'
var array = string.split(regex);
['FFFA2701','FFF0','FFFA1801','FFF0']

最后,这种情况也可能发生(FF00也可以跟着分隔01的情况:

var string = 'FF00FFF0FF001801FFF0';
'FF00FFF0FF001801FFF0'
var array = string.split(regex);
['FF01','FFF0','FF001801','FFF0']

提前致谢。

我尝试过并且几乎对我有用的只是按'FF'拆分并尝试在每个元素的开始处再次添加FF,但是无法做到。

1 个答案:

答案 0 :(得分:2)

您可以在模式中使用lookahead,如下所示:

/(?=FF(?:F[01A-E]|0[01]))/

前瞻将匹配字符串中紧接着给定模式的位置,但匹配的子字符串不会作为匹配的一部分使用。

例如:

'FFFC18FFFC20FFFC23FFFC27'.split(/(?=FF(?:F[01A-E]|0[01]))/)
["FFFC18", "FFFC20", "FFFC23", "FFFC27"]

'FFFA2701FFF0FFFA1801FFF0'.split(/(?=FF(?:F[01A-E]|0[01]))/)
["FFFA2701", "FFF0", "FFFA1801", "FFF0"]

'FF00FFF0FF001801FFF0'.split(/(?=FF(?:F[01A-E]|0[01]))/)
["FF00", "FFF0", "FF001801", "FFF0"]