簡體   English   中英

JavaScript表單驗證可確保生日為4位數字

[英]JavaScript form validation for ensuring a date of birth is 4 digits long

我正在嘗試通過確保它的4個字符長並且每個字符都是一個數字來確保有效的生日。

function validateBirth() {
    var year = document.forms["myForm"]["birth_year"].value;
    if (year.match(/\A\d{4}\z/) !== null) {
      alert("Date of birth must be 4 digits");
      return false;
   }
}

我正在嘗試使用JavaScript的string#match函數來搜索值中的正則表達式。 在這里,我們知道它必須包含4位數字,但也不能包含任何非數字。

例如,像a4b456這樣的字符串將無效。 這就是為什么我分別使用正則表達式標記\\A\\z來開始和結束字符串的原因。

當我在jsconsole中測試此功能時,它看起來像這樣

var year = "1958"
year.match(/\A\d{4}\z/)
=> null

我在rubular中測試了完全相同的正則表達式,並得知存在匹配項。 我要瘋了,還是我想念這里?

我知道我可以使用HTML Input Validation來做到這一點,但這在非現代瀏覽器上不起作用,因此我需要使用JavaScript方法。

JavaScript正則表達式的字符串開頭和結尾分別是^$ \\A\\z對於Ruby中的開始和結束有效,但對JavaScript無效。)因此,此正則表達式將起作用:

year.match(/^\d{4}$/);

如果您對布爾結果感興趣,而不是收到實際的匹配結果,則可以這樣做:

/^\d{4}$/.test(year)

沒有正則表達式:

var year = +(document.forms.myForm.birth_year.value);
var yearchk = !isNaN(year) && year/1000 || 0.5;
if (yearchk >= 1 && yearchk < 10) { /** it's ok **/ }+

暫無
暫無

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

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