NextInputsAndroid 校驗庫
NextInputs 基于 FireEye 升級而來, 繼承了FireEye校驗功能,并具有良好的擴展性,你可以根據(jù)業(yè)務(wù)需要創(chuàng)建自定義的校驗規(guī)則。
NextInputs項目地址:https://github.com/yoojia/NextInputs
NextInputs是數(shù)據(jù)校驗庫的核心,為Android開發(fā),使用Android的一些組件特性,另創(chuàng)建NextInputs-Android項目。
NextInputs-Android項目地址:https://github.com/yoojia/NextInputs-Android
NextInputs 特點
輕量級,純JDK實現(xiàn),無第三方依賴;
小巧,Jar文件僅38K;
內(nèi)置大量常用校驗?zāi)J?
支持自定義校驗?zāi)J綌U展;
支持自定義校驗?zāi)繕?biāo)擴展;
支持自定義錯誤消息提示;
NextInputs 內(nèi)建了兩種校驗?zāi)J椒诸悾红o態(tài)校驗?zāi)J?、?shù)值校驗?zāi)J健?使用NextInputs能夠極大地提升開發(fā)效率,內(nèi)置的多個校驗?zāi)J揭涯軕?yīng)付開發(fā)常用的校驗需求,如有特殊校驗需求,通過擴展接口也能快速解決。
使用示例
NextInputs inputs = new NextInputs(); inputs.add(Inputs.editText(mUsernameEditText), StaticPattern.Required(), StaticPattern.Email() ); boolean passed = inputs.test();
配置 Gradle 依賴
dependencies {
compile 'com.github.yoojia:next-inputs:<latest-version>' }
當(dāng)前最新版本為 1.0:
dependencies {
compile 'com.github.yoojia:next-inputs:1.0' }
StaticPattern - 靜態(tài)校驗?zāi)J?/h1>
靜態(tài)校驗?zāi)J揭部梢苑Q為數(shù)據(jù)格式匹配模式。在校驗時不需要其它輔助參數(shù),而是直接校驗輸入數(shù)據(jù)的格式是否符合要求。 NextInputs目前內(nèi)置包含以下幾種靜態(tài)校驗?zāi)J?,在未來版本也會加入其它使用頻率較高的模式:
Required - 必填模式
NotBlank - 非空模式
Digits - 數(shù)字模式
Email - 郵件地址模式
IPv4 - IP地址模式
Host - 域名模式
URL - URL地址模式
Numeric - 數(shù)值模式
BlankCard - 銀行卡/信用卡號碼模式
ChineseIDCard 身份證號碼模式
ChineseMobile 手機號碼模式(國內(nèi)手機號)
IsTrue - 結(jié)果為True模式
IsFalse - 結(jié)果為False模式
Required - 必填模式
設(shè)置Required模式后,輸入內(nèi)容不能為空,也是NextInputs不允許空值的兩條校驗規(guī)則之一
在設(shè)置Required模式后,Required模式在校驗時會優(yōu)先于其它模式。其它校驗?zāi)J皆谀J(rèn)情況下將按代碼添加順序依次執(zhí)行。
注意:
Required的校驗優(yōu)先級默認(rèn)為 StaticPattern/ValuesPattern.PRIORITY_REQUIRED(-1024),其它優(yōu)先級為StaticPattern/ValuesPattern.PRIORITY_GENERAL(0)。
如果輸入條目沒有添加Required校驗?zāi)J剑ɑ蛘逳otBlank模式),在輸入內(nèi)容為空的情況下,校驗結(jié)果是通過(Passed)的。
NotBlank - 非空數(shù)據(jù)模式
設(shè)置Required模式后,輸入內(nèi)容不能是任何空值,也是NextInputs不允許空值的兩條校驗規(guī)則之一
StaticPattern.Required(),輸入內(nèi)容不能為任何空數(shù)據(jù),除空數(shù)據(jù)外,還包括任意數(shù)量的純空格、制表符等。
Digits - 數(shù)字模式
StaticPattern.Digits(),輸入內(nèi)容只能是純數(shù)字。
Email - 郵件地址模式
StaticPattern.Email(),輸入內(nèi)容必須是有效的電子郵件地址。
IPv4 - IP地址模式
StaticPattern.IPv4(),輸入內(nèi)容必須是有效的IPv4地址。
Host - 主機地址模式
StaticPattern.Host(),輸入內(nèi)容必須是有效的主機地址。這個模塊包含了IPv4的校驗。
URL - URL地址模式
StaticPattern.URL(),輸入內(nèi)容必須是有效的URL地址。
Numeric - 數(shù)值模式
StaticPattern.Numeric(),輸入內(nèi)容必須是有效的數(shù)值。
BlankCard - 銀行卡/信用卡號碼模式
StaticPattern.BlankCard(),輸入內(nèi)容必須是有效的銀行卡號或者信用卡號。這個模式在實現(xiàn)上,使用銀行卡號校驗算法(Luhn)來校驗,可以支持13位到19位長度的有效卡號。
ChineseIDCard 身份證號碼模式
StaticPattern.ChineseIDCard(),輸入內(nèi)容必須是有效的中國居民身份證號碼。這個模式支持15位和18位身份證號。
ChineseMobile 手機號碼模式(國內(nèi)手機號)
StaticPattern.ChineseMobile(),輸入內(nèi)容必須是有效的手機號。這個手機號必須是11位國內(nèi)手機號,其它國家或者地區(qū)的手機號暫不支持。
IsTrue - 結(jié)果為True模式
StaticPattern.IsTrue(),輸入內(nèi)容必須是True值。通常用于校驗RadioBotton或者CheckBox等。
IsFalse - 結(jié)果為False模式
StaticPattern.IsFalse(),輸入內(nèi)容必須是False值。通常用于校驗RadioBotton或者CheckBox等。
ValuesPattern - 數(shù)值校驗?zāi)J?/h1>
數(shù)值校驗?zāi)J叫枰付ㄐr瀰?shù)來完成校驗。 NextInputs目前內(nèi)置包含以下幾種數(shù)值校驗?zāi)J?,在未來版本也會加入其它使用頻率較高的模式:
Required - 必填模式,與靜態(tài)校驗?zāi)J降谋靥钅J较嗤?
MinLength - 最小內(nèi)容長度
MaxLength - 最多內(nèi)容長度
RangeLength - 內(nèi)容長度在指定范圍內(nèi)
MinValue - 最小值
MaxValue - 最大值
RangeValue - 數(shù)值范圍
EqualsTo - 與指定內(nèi)容相同
NotEqualsTo - 與指定內(nèi)容不相同
Required - 必填項目
ValuesPattern.Required(),與StaticPattern.Required相同。
MinLength - 最小內(nèi)容長度
ValuesPattern.MinLength(minLength),輸入內(nèi)容的長度至少(包括)為指定長度。
MaxLength - 最多內(nèi)容長度
ValuesPattern.MaxLength(maxLength),輸入內(nèi)容的長度最大(包括)為指定長度。
RangeLength - 內(nèi)容長度在指定范圍內(nèi)
ValuesPattern.RangeLength(minLength, maxLength),輸入內(nèi)容的長度在指定范圍內(nèi)。
MinValue - 最小值
ValuesPattern.MinValue(minValue),輸入數(shù)值最?。òǎ橹付〝?shù)值。支持的數(shù)值類型:Int、Long、Float、Double;
MaxValue - 最大值
ValuesPattern.MaxValue(minValue),輸入數(shù)值最大(包括)為指定數(shù)值。支持的數(shù)值類型:Int、Long、Float、Double;
RangeValue - 數(shù)值范圍
ValuesPattern.RangeValue(minValue, maxValue),輸入數(shù)值在(包括)指定數(shù)值范圍內(nèi)。支持的數(shù)值類型:Int、Long、Float、Double;
EqualsTo - 與指定內(nèi)容相同
ValuesPattern.EqualsTo(...),輸入內(nèi)容與指定內(nèi)容相同。EqualsTo有兩個實現(xiàn)方式,一個是EqualsTo(Loader<String>),另一個是EqualsTo(fixedString);
EqualsTo(Loader<String>),延遲加載參數(shù)形式。當(dāng)開始校驗時,Loader的onLoadValue方法才會被執(zhí)行,并要求返回一個用于匹配輸入內(nèi)容的字符串;
EqualsTo(fixedString),與指定固定字符串相同;
NotEqualsTo - 與指定內(nèi)容不相同
方式與ValuesPattern.EqualsTo相同,判斷方式取反。
設(shè)置校驗失敗提示消息
NextInputs內(nèi)置的所有校驗?zāi)J蕉甲詭崾鞠?,這些提示消息描述也比較“抽象”,很可能不符合你的業(yè)務(wù)需要。使用 .msgOnFail(String) 接口或者 .msg(String) 接口可以設(shè)置校驗失敗提示消息。當(dāng)校驗失敗時,提示消息將通過MessageDisplay接口的具體實現(xiàn)類處理并顯示出來。
這兩個接口的作用是相同的,如果你覺得.msg(String)會導(dǎo)致你突然忘記這方法是干哈的,你可以使用.msgOnFail(String)方法來提醒自己。
使用 NextInputs.setMessageDisplay(MessageDisplay) 方法可以覆蓋默認(rèn)實現(xiàn),使用你想要的校驗失敗提示方式。
自定義校驗優(yōu)先級
NextInputs是通過 Pattern.priority 的數(shù)值來決定優(yōu)先級的,按數(shù)值升序。在非常有必要的情況下,可以使用 Pattern.setPriority(int) 方法來自定義校驗?zāi)J降膬?yōu)先級。不建議自定義優(yōu)先級,使用代碼順序即可。
空值
NextInputs對輸入數(shù)據(jù)空值字符串的定義是:
input == null || input.length() == 0
License
Copyright 2015 Yoojia Chen Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
