今天在作表單驗證的時候發現,validate
默認的驗證規則 :html
digits:true
必須輸入整數jquery
是隻能輸入正整數的。
而公司項目中表單一直用digits:true
,也沒發現異常,直到今天,那個數據是能夠輸入負數的,測試才發現,輸入了負整數,表單驗證提示 必須輸入整數! git
難道 負整數 不算是 整數 嗎?web
因而,我查看了jquery.validate.js
的源碼,發現:正則表達式
// http://docs.jquery.com/Plugins/Validation/Methods/digits digits: function( value, element ) { returnthis.optional(element) || /^\d+$/.test(value); },
而正則表達式:測試
驗證非負整數(正整數 + 0) ^d+$ this
驗證非正整數(負整數 + 0) ^((-d+)|(0+))$code
也就是說, jquery.validate.js
的源碼 中 digits:true
的確是驗證的非負整數(正整數 + 0);htm
因此,本身寫了個自定義方法,解決了整數(正整數+負整數+0)的驗證:blog
jQuery.validator.addMethod("integer", function (value, element) { var tel = /^-?\d+$/g; //正、負 整數 + 0 return this.optional(element) || (tel.test(value)); }, "請輸入整數");
整數 維基百科,自由的百科全書
天然數 維基百科,自由的百科全書
正則表達式 維基百科,自由的百科全書
JS正則表達式驗證數字
最全的經常使用正則表達式大全——包括校驗數字、字符、一些特殊的需求等等