2014-04-03 23 views
1

我需要在javascript中的方法,通過分隔符FF,這將幾乎總是跟着另一任何(F0,F1,FA,FB,FC,FD,FE)或在一些小的情況下,通過0001分割字符串。最終的陣列將需要看​​起來像這樣:分割字符串,並保持分隔符在JavaScript中加條件

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可以通過0001被followd太):提前

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

感謝。

我試過的幾乎對我來說只是分裂'FF',並試圖在每個元素的開始處再次添加FF,但無法做到這一點。

+3

這個問題似乎是題外話,因爲它要求的必要條件的實現,而不是尋求與實施的要求時遇到的一個具體問題的幫助。 –

+0

對不起,但我無法理解你的意思。我的問題是,我不能分割字符串保持分隔符,我應該如何格式化問題,使其不應該脫離主題? – ederollora

+2

@ederollora基本上,你要求我們*「發送你t3h codez」*。你應該自己嘗試過一些東西,並要求你的實施幫助 – Phil

回答

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"] 
+0

謝謝,那很完美。 – ederollora

+0

謝謝你的努力。這工作。我花了很長時間試圖尋找我來這裏問的解決方案。一些用戶試圖關閉它,我不完全知道我做錯了什麼,但正如我所說,如果我來到這裏是因爲我很絕望。謝謝你的時間。 – ederollora

+0

很高興我能幫到你。基本上,您展示了一些示例輸入以及您希望輸出的內容,這非常重要,但是您忽略了要展示您是如何嘗試自己解決的。正則表達式標籤是*完整*的問題,如'我想匹配X',這些問題顯示沒有努力或理解正則表達式。如果你從自己的嘗試中提供了一小段代碼,那麼你可能會得到更好的反應。無論如何,請記住下次您提出問題時要記住:) –