@ file : Suppress (" unused ") Ċ Ċ package Ġby . sh ost ko . rx validation Ċ Ċ import Ġandroid . util . Patterns Ċ import Ġjava . util . regex . Pattern Ċ Ċ private Ġclass ĠRegExp ValidationException ( message : ĠString ? Ġ= Ġnull ) Ġ: ĠValidation Exception ( message ) Ċ Ċ open Ġclass ĠRegExp Validator < T Ġ: ĠCharSequence >( private Ġval Ġpattern : ĠPattern , Ġprivate Ġval Ġmessage : ĠString ? Ġ= Ġnull ) Ġ: ĠValidator < T >() Ġ{ ĊĠĠĠ Ġconstructor ( pattern : ĠString , Ġmessage : ĠString ? Ġ= Ġnull ) Ġ: Ġthis ( Pattern . compile ( pattern ), Ġmessage ) ĊĊĠĠĠ Ġoverride Ġfun Ġvalidate ( value : ĠT ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! pattern . matcher ( value ). matches ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠRegExp ValidationException ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmessage Ġ?: Ġ" Value Ġdoes Ġnot Ġmatch Ġrequired Ġpattern " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠEmail Validator < T Ġ: ĠCharSequence >( message : ĠString ? Ġ= Ġnull ) Ġ: ĠRegExp Validator < T >( Patterns . EMAIL _ ADDRESS , Ġmessage Ġ?: Ġ" The Ġe - mail Ġaddress Ġis Ġnot Ġin Ġa Ġvalid Ġformat ") Ċ Ċ class ĠUrl Validator < T Ġ: ĠCharSequence >( message : ĠString ? Ġ= Ġnull ) Ġ: ĠRegExp Validator < T >( Patterns . WEB _ URL , Ġmessage Ġ?: Ġ" The ĠURL Ġis Ġnot Ġin Ġa Ġvalid Ġformat ") Ċ Ċ class ĠPhone Validator < T Ġ: ĠCharSequence >( message : ĠString ? Ġ= Ġnull ) Ġ: ĠRegExp Validator < T >( Patterns . PHONE , Ġmessage Ġ?: Ġ" The Ġphone Ġnumber Ġis Ġnot Ġin Ġa Ġvalid Ġformat ") Ċ Ċ class ĠIp Validator < T Ġ: ĠCharSequence >( message : ĠString ? Ġ= Ġnull ) Ġ: ĠRegExp Validator < T >( Patterns . IP _ ADDRESS , Ġmessage Ġ?: Ġ" The Ġip Ġaddress Ġis Ġnot Ġvalid ") Ċ Ċ class ĠHex Validator < T Ġ: ĠCharSequence >( message : ĠString ? Ġ= Ġnull ) Ġ: ĠRegExp Validator < T >(" ^ (# | )[ 0 - 9 A - Fa - f ]+ \ $", Ġmessage Ġ?: Ġ" The Ġvalue Ġhas Ġnot Ġonly Ġhexadecimal Ġdigit Ġcharacters ")