Kotlin實現的手機正則以及身份證正則判斷

2021-10-24 22:38:23 字數 2234 閱讀 3823

手機號正則

/**

* 手機號碼正則判斷

*/funisphonenum

(phone: string)

: boolean $"

)val matcher = compile.

matcher

(phone)

return matcher.

matches()

}//支援13、14、15、16、17、18、19開頭後面任意搭9位

判斷是否是身份證

/**

* 省份證id正則校驗

*/funisidnumber

(idnumber: string?

): boolean

// 定義判別使用者身份證號的正規表示式(15位或者18位,最後一位可以為字母)

val regularexpression =

"(^[1-9]\\d(18|19|20)\\d((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\\d[0-9xx]$)|"

+"(^[1-9]\\d\\d((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\\d$)"

//假設18位身份證號碼:41000119910101123x 410001 19910101 123x

//^開頭

//[1-9] 第一位1-9中的乙個 4

//\\d 五位數字 10001(前六位省市縣地區)

//(18|19|20) 19(現階段可能取值範圍18xx-20xx年)

//\\d 91(年份)

//((0[1-9])|(10|11|12)) 01(月份)

//(([0-2][1-9])|10|20|30|31)01(日期)

//\\d 三位數字 123(第十七位奇數代表男,偶數代表女)

//[0-9xx] 0123456789xx其中的乙個 x(第十八位為校驗值)

//$結尾

//假設15位身份證號碼:410001910101123 410001 910101 123

//^開頭

//[1-9] 第一位1-9中的乙個 4

//\\d 五位數字 10001(前六位省市縣地區)

//\\d 91(年份)

//((0[1-9])|(10|11|12)) 01(月份)

//(([0-2][1-9])|10|20|30|31)01(日期)

//\\d 三位數字 123(第十五位奇數代表男,偶數代表女),15位身份證不含x

//$結尾

val matches = idnumber.

matches

(regularexpression.

toregex()

)//判斷第18位校驗值

if(matches)

val idcardlast = chararray[17]

val idcardmod = sum %

11if

(idcardy[idcardmod]

.touppercase()

== idcardlast.

tostring()

.touppercase()

)else

}catch

(e: exception)}}

return matches

}

規則注視中有的並不是任意組合就是身份證

根據身份證計算年齡

/**

* 計算年齡

*/funidcardtoage

(idcard: string)

: int else if (yearminus == 0) else if (yearminus > 0)

} else if (monthminus > 0)

}*/return age

}

>這裡我只精確到年份,如果要精確到月份的話則只需要**中注釋的部分開啟

kotlin正則的使用

1.正則一些常用的轉義符。任意單個字元 0或乙個前置元素 1或n個前置元素 任意個前置元素 後置元素起始 後置元素結束 ab a或b a h a到h任意乙個都可以,表示區間,沒有就只有明確寫出的字元才符合 s 空格符 w 大小寫字母和數字,a za z0 9 d 數字,大小寫 哈哈哈哈哈哈哈哈 前置...

記憶體對齊的規則以及作用

首先由乙個程式引入話題 include using namespace std struct st1 struct st2 int main cout 程式的輸出結果為 sizeof st1 is 12 sizeof st2 is 8 問題出來了,這兩個一樣的結構體,為什麼sizeof的時候大小不一...

記憶體對齊的規則以及作用

首先由乙個程式引入話題 1 環境 vc6 windows sp22 程式13 include iostream 45 using namespace std 67 struct st1 8 1314 struct st215 20 21int main 2227 程式的輸出結果為 sizeof st...