2015-04-30 3 views
6

Ho una stringa dire "gg mese aaaa" e voglio dividere per convertire in array come ["dd", "", "mese", "", "yyyy"].Espressione regolare per dividere la stringa ma catturare sperator

Quello che ho finora e questo metodo funziona. Ma sto cercando l'espressione Reg per farlo se qualcuno può aiutarti?

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

Si desidera mantenere gli spazi '" "' tra i numeri? –

+0

KJ Prezzo, Sì, voglio i separatori in poi reg '([\/\\ -., \ '":]) 'Anche un elemento nell'array finale.lo spazio' "" 'in questo caso – user3130446

risposta

5

Semplice:

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

Questo sarà diviso su un confine di parola.

+0

Questo è perfetto e ha funzionato come mi aspettavo. Grazie mille - Reddy – user3130446

+0

I vostri benvenuti.;) –

3

Suppongo che "mm gg aaaa" sarà effettivamente numeri, ma questo lavoro per le stringhe come bene.

var date ="01 02 1292"; 
 

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

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

+0

questo funzionerà solo se il separatore è spazi "" "' ma se leggi la mia domanda, voglio i diversi separatori usati nelle espressioni reg. Perché il formato può avere qualsiasi separatore (vedi la mia espressione reg.) – user3130446

+0

Ah rende senso –

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")));