2012-01-20 12 views

risposta

21
 

function parseDate(str) { 
    var m = str.match(/^(\d{1,2})-(\d{1,2})-(\d{4})$/); 
    return (m) ? new Date(m[3], m[2]-1, m[1]) : null; 
} 

 
+0

Grazie a tutti, ha funzionato perfettamente ... – Gopesh

4

Prova questo:

'01-01-2012'.match(/\d{2}-\d{2}-\d{4}/) 

Si noti che in questo modo che la data 33-12-2022 sarebbe considerata valida, come pure!

3
'01-01-2012'.match(/(?!3[2-9]|00|02-3[01]|04-31|06-31|09-31|11-31)[0-3][0-9]-(?!1[3-9]|00)[01][0-9]-(?!10|28|29)[12][089][0-9][0-9]/) 

questo sembra solo per date valide dal 1800 al 2099. Nessun salto anno di supporto (come in assume ogni anno è un anno bisestile possibile).

+0

Si prega di aggiornare con parte codice formattato. –

3

Beh, ho fatto questo:

'31-12-1987'.match(/(3[01]|[2][0-9]|0\d)-(1[0-2]|0\[1-9])-\d{4}/) 

convalida il giorno 01-31, mese 01-12 e l'anno di quattro cifre. Fallisce solo il 30 febbraio e i mesi senza 31 giorni. Che è possibile pulire usando new Date('mm/dd/yyyy').

+0

per la data hijri, non c'è '31'ˢᵗ ..ecco perché, rimuoviamo '1' da'/3 [01] .... 'per avere:'/(3 [0] | [2] [0-9] | 0 \ d) - (1 [0- 2] | 0 \ [1-9]) - \ d {4}/' –

-2

/^ (\ d {1,2}) (\ /) (\ d {1,2}) \ 2 (\ d {4}) \ $/

11

dd-MM- yyyy

Verifica se anno bisestile. anni validi dal 1900 al 9999. Solo dd-mm-aaaa

var stringToValidate = "29-02-2012"; 
var rgexp = /(^(((0[1-9]|1[0-9]|2[0-8])[-](0[1-9]|1[012]))|((29|30|31)[-](0[13578]|1[02]))|((29|30)[-](0[4,6,9]|11)))[-](19|[2-9][0-9])\d\d$)|(^29[-]02[-](19|[2-9][0-9])(00|04|08|12|16|20|24|28|32|36|40|44|48|52|56|60|64|68|72|76|80|84|88|92|96)$)/; 
var isValidDate = rgexp.test(stringToValidate); 
+0

Puoi spiegare la tua espressione regolare ..? –

+0

@GangadharJannu Ci scusiamo per il ritardo nella risposta, non ho notato la domanda – gdZeus

+0

'(0 [1-9] | [12] [0-8]) [-] (0 [1-9] | 1 [012]) '- giorni: da 1 a 28 per qualsiasi mese – gdZeus

2

Questa espressione regolare è per MM/DD/YYYY e M/D/AAAA

var date_regex = /^(0?[1-9]|1[012])[\/](0?[1-9]|[12][0-9]|3[01])[\/]\d{4}$/; 
+0

molto grazie Rawat. –

0

Lavorare alcuni di quanto sopra insieme (principalmente @ gdZeus di) ora è possibile fai MM/gg/aaaa | MM-gg-aaaa | MM.GG.AAAA

/(^(((0[1-9]|1[012])[-/.](0[1-9]|1[0-9]|2[0-8]))|((0[13578]|1[02])[-/.](29|30|31))|((0[4,6,9]|11)[-/.](29|30)))[-/.](19|[2-9][0-9])\d\d$)|(^02[-/.]29[-/.](19|[2-9][0-9])(00|04|08|12|16|20|24|28|32|36|40|44|48|52|56|60|64|68|72|76|80|84|88|92|96)$)/ 

Inoltre, se si utilizza questa linea in un file js è possibile utilizzare il seguente, che restituisce un regexp letterale. Questo ti permetterà di verificare che una data è nel passato! Questo è utile per i compleanni. Puoi invertirlo per verificare che una data sia anche in futuro (ad esempio, controllare la carta di credito exp). Questo funzionerà quasi ovunque in javascript ma non se hai davvero bisogno di un valore letterale regexp. Ad esempio se lo stai serializzando in un altro formato senza la possibilità di eseguire js.

new RegExp('(^(((0[1-9]|1[012])[-/.](0[1-9]|1[0-9]|2[0-8]))|((0[13578]|1[02])[-/.](29|30|31))|((0[4,6,9]|11)[-/.](29|30)))[-/.]('+range(1920, new Date().getFullYear()).join('|')+')$)|(^02[-/.]29[-/.]('+range(1920, new Date().getFullYear()).filter(function(year){if (year % 4 == 0) { return true }}).join('|')+')$)/', 'g') 

rendimenti:

/(^(((0[1-9]|1[012])[-\/.](0[1-9]|1[0-9]|2[0-8]))|((0[13578]|1[02])[-\/.](29|30|31))|((0[4,6,9]|11)[-\/.](29|30)))[-\/.](1920|1921|1922|1923|1924|1925|1926|1927|1928|1929|1930|1931|1932|1933|1934|1935|1936|1937|1938|1939|1940|1941|1942|1943|1944|1945|1946|1947|1948|1949|1950|1951|1952|1953|1954|1955|1956|1957|1958|1959|1960|1961|1962|1963|1964|1965|1966|1967|1968|1969|1970|1971|1972|1973|1974|1975|1976|1977|1978|1979|1980|1981|1982|1983|1984|1985|1986|1987|1988|1989|1990|1991|1992|1993|1994|1995|1996|1997|1998|1999|2000|2001|2002|2003|2004|2005|2006|2007|2008|2009|2010|2011|2012|2013|2014|2015)$)|(^02[-\/.]29[-\/.](1920|1924|1928|1932|1936|1940|1944|1948|1952|1956|1960|1964|1968|1972|1976|1980|1984|1988|1992|1996|2000|2004|2008|2012)$)\//g 

NOTA: questo utilizza la funzione gamma di sottolineatura per generare le date. È possibile scrivere il proprio anche se, come questa versione molto poco elegante :)

function range(start, end) { 
    var foo = []; 
    for (var i = start; i <= end; i++) { 
    foo.push(i); 
    } 
    return foo; 
} 
0
$('#DOB').blur(function() { 
var s = $('#DOB').val(); alert('Entered date is:' + s); 
var parms = s.split(/[\.\-\/]/); 
var yyyy = parseInt(parms[2], 10); 

var d = new Date(); 
var n = d.getFullYear(); //alert('current year is :' + n); 
if (yyyy > n || yyyy < 1900) { 
    alert('Improper date format, Please enter dd/mm/yyyy format. (invalid year)'); 
} 
var mm = parseInt(parms[1], 10); 
if (mm > 12 || mm < 0) 
{ 
    alert('Improper date format, Please enter dd/mm/yyyy format. (invalid month'); 
} 
var dd = parseInt(parms[0], 10); 
if (dd > 31 || dd < 0) 
{ 
    alert('Improper date format, Please enter dd/mm/yyyy format. (invalid day'); 
} 

//var date = new Date(dd, mm - 1, yyyy, 12, 0, 0, 0); 
//var ndate = (date.getMonth() + 1) && ddmm === date.getDate() && yyyy === date.getFullYear(); 
// alert('new date is:' + ndate); 
}); 
3

Ecco Regex per più formati di data che lavorano per me:

 //dd.MM.yyyy 
     var date_regex = /^(0[1-9]|1\d|2\d|3[01])\.(0[1-9]|1[0-2])\.(19|20)\d{2}$/; 
     alert(date_regex.test("02.02.1991")); 

//  //dd/mm/yyyy 
//  var date_regex = /^(0[1-9]|1\d|2\d|3[01])\/(0[1-9]|1[0-2])\/(19|20)\d{2}$/; 
//   alert(date_regex.test("02/12/1991")); 

//  //dd-mm-yyyy 
//  var date_regex = /^(0[1-9]|1\d|2\d|3[01])\-(0[1-9]|1[0-2])\-(19|20)\d{2}$/; 
//  alert(date_regex.test("02-12-1991")); 

//  //mm/dd/yyyy 
//  var date_regex = /^(0[1-9]|1[0-2])\/(0[1-9]|1\d|2\d|3[01])\/(19|20)\d{2}$/; 
//  alert(date_regex.test("12/02/1991")); 


//  //yyyy.MM.dd 
//  var date_regex = /^((19|20)\d{2})\.(0[1-9]|1[0-2])\.(0[1-9]|1\d|2\d|3[01])$/; 
//  alert(date_regex.test("1991.12.02")); 

//  //yyyy/MM/dd 
//  var date_regex = /^((19|20)\d{2})\/(0[1-9]|1[0-2])\/(0[1-9]|1\d|2\d|3[01])$/; 
//  alert(date_regex.test("1991/12/02")); 

//  //yyyy-MM-dd 
//  var date_regex = /^((19|20)\d{2})\-(0[1-9]|1[0-2])\-(0[1-9]|1\d|2\d|3[01])$/; 
//  alert(date_regex.test("1991-12-02")); 
Problemi correlati