簡體   English   中英

使用正則表達式提取3組2位數

[英]Use Regex to extract 3 groups of 2 digits

在javascript中,我有一個包含來自HTML表單的13位ID號的var。 此ID號的前6位數字是格式的出生日期:YYMMDD。

輸入示例:9409201234987; 其中94是年份,09月份是當天20。

我需要驗證這個生日,以便:

  1. 年份介於1920年至1997年(含)之間
  2. 這個月在1到12之間
  3. 這一天是1至31歲

如果其中任何一個都是假的,我的函數需要返回false。

到目前為止這是我的功能:

 function validateID(idNum, errors) { if (!/^\\d{13}$/.test(idNum.value)) { errors.innerHTML = "ID Number must be 13 numerical digits"; return false; } var year = idNum.value.substring(0, 3); var month = idNum.value.substring(3, 5); var day = idNum.value.substring(5, 7); if (year > 97 || year < 20) { errors.innerHTML = "Year is outside of range (1920 - 1997)"; return false; } else if (month > 12 || month < 1) { errors.innerHTML = "Month is outside of range (1 - 12)"; return false; } else if (day > 31 || day < 1) { errors.innerHTML = "Day is outside of range (1 - 31)"; return false; } } 

參數:idNum是HTML表單輸入,類型為text。 並且錯誤是我的HTML中輸出錯誤的div。

子串顯然不適合我,有人可以建議一個不同的方法,最好使用正則表達式。 謝謝!

你的子串參數是錯誤的。 結束參數是從0開始的,而不是從1開始的。 此外,您應該使用parseInt()將字符串轉換為數字。

var year = parseInt(idNum.value.substring(0, 2), 10);
var month = parseInt(idNum.value.substring(2, 4), 10);
var day = parseInt(idNum.value.substring(4, 6), 10);

您還可以在進行正則表達式匹配時提取它們。

if (!(match = /^(\d{2})(\d{2})(\d{2})\d{7}$/.test(idNum.value)) {
    errors.innerHTML = "ID Number must be 13 numerical digits";
    return false;
}
var year = parseInt(match[1], 10);
var month = parseInt(match[2], 10);
var day = parseInt(match[3], 10);

暫無
暫無

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

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