2015-04-30 4 views
6

У меня есть строка «dd month yyyy», и я хочу, чтобы split преобразовывался в массив подобно ["dd", "", "month", "", "yyyy"].Регулярное выражение, чтобы разделить строку, но захватить sperator

Что я до сих пор и этот метод работает. Но я ищу выражение Reg, если кто-то может помочь?

function toArray(format) { 
var vDateStr = ''; 
var vComponantStr = ''; 
var vCurrChar = ''; 
var vSeparators = new RegExp('[\/\\ -.,\'":]'); 
var vDateFormatArray = new Array(); 

for (var i=0; i < pFormatStr.length; i++) 
{ 
    vCurrChar = pFormatStr.charAt(i); 
    if ((vCurrChar.match(vSeparators)) || (i + 1 == pFormatStr.length)) // separator or end of string 
    { 
     if ((i + 1 == pFormatStr.length) && (!(vCurrChar.match(vSeparators)))) // at end of string add any non-separator chars to the current component 
     { 
      vComponantStr += vCurrChar; 
     } 
     vDateFormatArray.push(vComponantStr); 
     if (vCurrChar.match(vSeparators)) vDateFormatArray.push(vCurrChar); 
     vComponantStr = ''; 
    } 
    else 
    { 
     vComponantStr += vCurrChar; 
    } 

} 
return vDateFormatArray; 
} 
+0

Вы хотите сохранить пробелы '» «' между числами? –

+0

KJ Цена, Да, я хочу, чтобы разделители тогда reg '([\/\\ -., \ '":]) 'Также были элементом в конечном массиве. Пространство' '' 'в этом случае. – user3130446

ответ

5

Простой:

> "10 Jan 2015".split(/\b/g) 
< ["10", " ", "Jan", " ", "2015"] 

Это разделится на границе слова.

+0

Это прекрасно, и он работал так, как я ожидал. Большое спасибо. - Reddy – user3130446

+0

Ваш приветствуется.;) –

3

Я предполагаю, что «мм гггг» на самом деле будет число, но это будет работать для струн, а также.

var date ="01 02 1292"; 
 

 
var dateArr = date.match(/[^\s]+|\s/g); 
 

 
document.write(JSON.stringify(dateArr));

+0

это будет работать только в том случае, если разделитель представляет собой пробелы '' '', но если вы прочитаете мой вопрос, я хочу, чтобы в разделителях использовались разные разделители. Поскольку формат может иметь любой разделитель (см. мое выражение reg). – user3130446

+0

Ah делает смысл –

1

function toArray(format) { 
 
    var r = new RegExp('([0-9]{2})()([0-9]{2})()([0-9]{4})'); 
 
    return format.match(r).slice(1); 
 
} 
 

 
document.write(JSON.stringify(toArray("30 12 1980")));

Смежные вопросы