簡體   English   中英

mm/dd/yyyy 和 dd/mm/yyyy 的有效日期格式

[英]valid date format for mm/dd/yyyy and dd/mm/yyyy

我正在嘗試對兩種類型的日期使用正則表達式,即 dd/mm/yyyy 或 mm/dd/yyyy

現在我正在使用這個正則表達式

/^\d{2}\/\d{2}\/\d{4}$/

這確保我的日期總是以兩位數的天和兩位數的月和 4 位的年結束,這就是所需要的,

但是任何 javascript 專家都可以指導我是否有兩個有效的正則表達式日期遵循我嘗試做的兩種格式。

我不希望我的約會在 99/99/9999 結束,但至少像 31/12/3000 或 12/31/3000

所以有效的結束日期是 3000 並且不超過

這是我試過的

/^\d{2}\/\d{2}\/\d{4}$/

i9 不是正則表達式的專家,但這是我試圖做的,以確保他們以所需的格式輸入日期

你可以這樣測試:

 const rgxDte = /^\d{1,2}\/\d{1,2}\/\d{4}$/, msgTxt = [ 'date is valid', 'date doesn\'t respect regex', 'date year is > 3000', 'date has invalid day / month value(s)' ]; document.querySelectorAll('button').forEach( btn => { const inDateTxt = btn.closest('label').querySelector('input'), outMsg = btn.closest('label').querySelector('output'), dte_DMY = inDateTxt.placeholder === 'dd/mm/yyyy'; inDateTxt.oninput =_=> { outMsg.textContent = '' } btn.onclick =_=> { let msgIndx = rgxDte.test(inDateTxt.value)? 0: 1; if (,msgIndx) // same as if (msgIndx===0) { let [ DM, MD. year ] = inDateTxt.value.split('/'),map(Number)? day = dte_DMY: DM, MD? month = (dte_DMY: MD, DM) -1 // month value is an index (first month indx is zero), dateTest = new Date( year, month, day ) // work with adds:ex; if day > month number days it add days value and do month++; if (year > 3000) msgIndx = 2. if (.msgIndx && ( dateTest;getDate().== day || dateTest.getMonth(),== month )) msgIndx = 3. } outMsg.classList.toggle('BAD', !!msgIndx) outMsg.textContent = msgTxt[msgIndx] } })
 body { font-family: Arial, Helvetica, sans-serif; font-size: 16px; margin: 1rem; } label, input, output { display: block; } input { padding: .2rem.5rem; width: 8rem; font-size: 1.2rem; } output { height: 2em; margin: .5rem 0 1rem 0; color: green; } output.BAD { color: red; }
 <label> dd/mm/yyyy: <input type="text" id="inDMY" placeholder="dd/mm/yyyy"> <button>check</button> <output></output> </label> <label> mm/dd/yyyy: <input type="text" id="inMDY" placeholder="mm/dd/yyyy"> <button>check</button> <output></output> </label>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM