2014-02-28 44 views
2

我想分割一個字符串的範圍和特定模式,同時也保持分隔符。從我發現它可能會最好使用match而不是split讓我們說我有以下代碼。匹配範圍和特定模式,同時保持分隔符

var stringy = 'a1 ... c3d4 ... f6'; 
var splitStringy = stringy.match(/[^0-9]+[0-9]+/g); 
console.log(splitStringy); 

現在它返回:

["a1", " ... c3", " d4", " ... f6"] 

,但我想它返回(保持...周圍的空格):

["a1", " ... ", "c3", "d4", " ... ", "f6"] 

有一個簡單的方法來修改我的正則表達式通過將小數與空格相匹配來保持一行?

回答

3

您可以使用:

s = 'a1 ... c3d4 ... f6'; 
m = s.match(/[a-z]+[0-9]+|\W+/g); 
["a1", " ... ", "c3", "d4", " ... ", "f6"] 
+0

謝謝爲進一步編輯,這一個似乎是最好的。 – Josh

+0

對不起,我不得不調整它幾次,但是最後它很好。 – anubhava

0
var splitStringy = stringy.match(/(\w+| \.\.\.)/g); 

會做到這一點,這將匹配任何單詞字符(A-Z,0-9,下劃線)與專門劃定序列 '...'。

結果:

["a1", " ... ", "c3d4", " ... ", "f6"] 
+0

這個問題唯一的問題是,它不會像我原來的例子那樣將數字分開。 – Josh

+0

糟糕,對我的細節不夠重視。 – Nevett

0

圍繞小數下面將進行拆分一切如你所願,但不會保留空間:

var splitStringy = stringy.match(/[^0-9 ]+[0-9.]+/g); 

,將返回:

["a1", "...", "c3", "d4", "...", "f6"] 
+1

這個人也可以工作,儘管anubhava確實保留了小數點附近的空格。 – Josh

相關問題