我需要一個日期格式的正則表達式:dd-mm-yyyy在Javascript中。使用Javascript的日期格式 - dd-mm-yyyy的正則表達式
回答
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;
}
感謝大家,它完美地工作... – Gopesh
試試這個:
'01-01-2012'.match(/\d{2}-\d{2}-\d{4}/)
注意,這樣的日期33-12-2022會被認爲是有效的!
'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]/)
這看起來只有有效日期從1800年到2099年沒有閏年的支持(如它假定每年是一個可能的閏年)。
請更新格式化的代碼部分。回教日期 –
好吧,我做了這個:
'31-12-1987'.match(/(3[01]|[2][0-9]|0\d)-(1[0-2]|0\[1-9])-\d{4}/)
一天驗證來自01到31個月,從01到12和一年中的四個數字。它只在2月30日失敗,沒有31天的月份。您可以使用new Date('mm/dd/yyyy')
進行清潔。
,沒有'31'ˢᵗ..這就是爲什麼,我們從'/ 3 [01] ....'中刪除'1'來得到:/(3 [0] | [2] [0-9] | 0 \ d) - (1 [0- 2] | 0 \ [1-9]) - \ d {4} /' –
/^(\ d {1,2})(\ /)(\ d {1,2})\ 2(\ d {4})\ $/
DD-MM- yyyy
檢查閏年。 從1900年到9999年是有效的。只有DD-MM-YYYY
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);
這正則表達式是MM/DD/YYYY和M/d/YYYY
var date_regex = /^(0?[1-9]|1[012])[\/](0?[1-9]|[12][0-9]|3[01])[\/]\d{4}$/;
。 –
工作幾以上的一起(主要是@ gdZeus的),現在你可以做MM/dd/yyyy | MM-dd-yyyy | MM.DD.YYYY
/(^(((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)$)/
此外,如果你正在使用這個內嵌的js文件,你可以使用它返回一個正則表達式字面以下。這將允許您驗證日期是過去!這對生日很方便。您可以將其反轉以檢查日期是否將來也如此(例如檢查信用卡exp)。這幾乎可以在JavaScript的任何地方工作,但如果你確實需要一個正則表達式文字,那麼這個工作就不會。例如,如果您將其序列化爲某種其他格式而無法運行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')
回報:
/(^(((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
注:本使用下劃線的範圍函數生成的日期。你可以寫你自己的,雖然這樣很不雅觀版本:)
function range(start, end) {
var foo = [];
for (var i = start; i <= end; i++) {
foo.push(i);
}
return foo;
}
$('#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);
});
這裏是正則表達式多種日期格式爲我工作:
//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"));
- 1. 正則表達式的日期格式
- 2. 日期格式的正則表達式
- 3. 正則表達式匹配類型的日期:DDMMYYYY
- 4. 正則表達式日期格式
- 5. 正則表達式日期格式?
- 6. jquery正則表達式日期格式
- 7. 正則表達式 - 日期格式
- 8. 正則表達式的日期在JavaScript
- 9. JavaScript中的任何格式的日期正則表達式?
- 10. 日期格式的javascript正則表達式異常
- 11. 使用正則表達式重新排序的日期格式
- 12. JavaScript正則表達式驗證日期
- 13. 正則表達式日期
- 14. Javascript正則表達式日期格式dd/mm/yy
- 15. 日誌格式的正則表達式
- 16. 使用正則表達式驗證日期格式
- 17. 顯示日期格式,使用正則表達式
- 18. 如何使用正則表達式驗證日期格式
- 19. Python:使用正則表達式更改日期格式
- 20. 使用正則表達式來驗證日期格式
- 21. 使用正則表達式驗證日期格式
- 22. 日期格式正則表達式匹配日期分隔符
- 23. (教學)的JavaScript - 使用正則表達式(正則表達式)
- 24. 使用正則表達式的Javascript正則表達式匹配
- 25. 的Javascript正則表達式格式
- 26. 含空格的日期和日期的正則表達式
- 27. 用於日期格式的正則表達式
- 28. 日期格式的正則表達式模式dd.MM.yyyy
- 29. 正則表達式來表達CCYYMMDD格式日期
- 30. PHP的正則表達式的日期格式
你可以去[這裏](HTTP:/ /stackoverflow.com/questions/5465375/javascript-date-regex-dd-mm-yyyy)以前回答問題 – cctan