[英]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.