IMEI,手机号,身份证号格式有效性校验
IMEI格式有效性校验
imei一般由15位数字组成,有些厂家会在最后加上两位数字表示版本号。imei的校验主要通过模10算法,基于前14位的数字校验第15位的数值。
class IsValidIMEI: AbstractScalar(), (String) -> Boolean {
//一般的imei基本都是15位,有些17位的,后两位是版本号
private val regex : Regex = Regex("\\d{15}|\\d{17}")
override operator fun invoke(imei: String): Boolean {
if (imei.isEmpty()){
return false
}
return regex.matches(imei) && luhnAlgorithm(imei)
}
private fun luhnAlgorithm(imei: String): Boolean{
var sum1 = 0
var sum2 = 0
var index = 0
while (index < 14){
val num = imei