我需要javascript中的一个方法,用分隔符FF
分割字符串,这几乎总是跟着另一个任何的(F0,F1,FA,FB,FC,FD,FE)
或者在某些小的情况下00
或01
。最终的数组需要如下所示:
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']
最后,这种情况也可能发生(FF
或00
也可以跟着分隔01
的情况:
var string = 'FF00FFF0FF001801FFF0';
'FF00FFF0FF001801FFF0'
var array = string.split(regex);
['FF01','FFF0','FF001801','FFF0']
提前致谢。
我尝试过并且几乎对我有用的只是按'FF'拆分并尝试在每个元素的开始处再次添加FF,但是无法做到。
答案 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"]