package Ġarrow . ref inement . strings Ċ Ċ import Ġarrow . ref inement . Ref ined Ċ import Ġarrow . ref inement . ensure Ċ import Ġarrow . ref inement . strings . EndsWith . Value Ċ import Ġkotlin . jvm . Jvm Inline Ċ Ċ @ Jvm Inline Ċ value Ċ /** Ċ Ġ* Ġ[ Matches Regex ] Ġconstr ains Ġ[ String ] Ġto Ġmatch Ġa Ġgiven Ġregular Ġexpression Ċ Ġ* Ċ Ġ* Ġ# ĠSafe Ġnullable Ġconstruction Ċ Ġ* Ċ Ġ* Ġ``` kotlin : ank Ċ Ġ* Ġimport Ġarrow . ref inement . strings . Matches Regex Ċ Ġ* Ċ Ġ* ĠMat ches Regex . Regex (" hello Ġworld ". to Regex ()). or Null (" hello Ġworld ") Ċ Ġ* Ġ``` Ċ Ġ* Ċ Ġ* Ġ``` kotlin : ank Ċ Ġ* ĠMat ches Regex . Regex (" hello Ġworld ". to Regex ()). or Null (" abc ") Ċ Ġ* Ġ``` Ċ Ġ* Ċ Ġ* Ġ# ĠResolved Ġconstraints Ċ Ġ* Ċ Ġ* Ġ``` kotlin : ank Ċ Ġ* ĠMat ches Regex . Regex (" hello Ġworld ". to Regex ()). constraints (" hello Ġworld ") Ċ Ġ* Ġ``` Ċ Ġ* Ċ Ġ* Ġ``` kotlin : ank Ċ Ġ* ĠMat ches Regex . Regex (" hello Ġworld ". to Regex ()). constraints (" abc ") Ċ Ġ* Ġ``` Ċ Ġ* Ċ Ġ* Ġ Ġ``` kotlin : ank Ċ Ġ* ĠMat ches Regex . Regex (" hello Ġworld ". to Regex ()). isValid (" hello Ġworld ") Ċ Ġ* Ġ``` Ċ Ġ* Ċ Ġ* Ġ``` kotlin : ank Ċ Ġ* ĠMat ches Regex . Regex (" hello Ġworld ". to Regex ()). isValid (" abc ") Ċ Ġ* Ġ``` Ċ Ġ* Ċ Ġ* Ġ# ĠFold ing Ġvalidation Ċ Ġ* Ċ Ġ* Ġ``` kotlin : ank Ċ Ġ* ĠMat ches Regex . Regex (" hello Ġworld ". to Regex ()). fold (" hello Ġworld ", Ġ{ Ġ" failed : Ġ$ it " Ġ}, Ġ{ Ġ" success : Ġ$ it " Ġ}) Ċ Ġ* Ġ``` Ċ Ġ* Ċ Ġ* Ġ``` kotlin : ank Ċ Ġ* ĠMat ches Regex . Regex (" hello Ġworld ". to Regex ()). fold (" abc ", Ġ{ Ġ" failed : Ġ$ it " Ġ}, Ġ{ Ġ" success : Ġ$ it " Ġ}) Ċ Ġ* Ġ``` Ċ Ġ* Ċ Ġ* Ġ# ĠUnsafe Ġrequire Ċ Ġ* Ċ Ġ* Ġ``` kotlin : ank Ċ Ġ* ĠMat ches Regex . Regex (" hello Ġworld ". to Regex ()). require (" hello Ġworld ") Ċ Ġ* Ġ``` Ċ Ġ* Ċ Ġ* Ġ``` kotlin : ank Ċ Ġ* Ġtry Ġ{ ĠMat ches Regex . Regex (" hello Ġworld ". to Regex ()). require (" abc ") Ġ} Ġcatch Ġ( e : ĠIllegalArgumentException ) Ġ{ Ġe . message Ġ} Ċ Ġ* Ġ``` Ċ Ġ* Ċ Ġ*/ Ċ class ĠMat ches Regex Ġprivate Ġconstructor ( val Ġvalue : ĠString ) Ġ{ ĊĠ Ġclass ĠRegex ( value : Ġkotlin . text . Regex , Ġmsg : Ġ( String ) Ġ-> ĠString ? Ġ= Ġ{ Ġnull Ġ}) Ġ: ĠRef ined < String , ĠMat ches Regex >( :: Matches Regex , Ġ{ ĊĠĠĠ Ġensure (( it . matches ( value )) Ġto Ġ( msg ( it ) Ġ?: Ġ" Expected Ġ$ it Ġto Ġmatch Ġ$ value ")) ĊĠ Ġ}) Ċ }