IBAN: Difference between revisions

Content deleted Content added
Add Jsish
Drkameleon (talk | contribs)
No edit summary
Line 138:
GB82 TEST 1234 5698 7654 32 is not valid.
GB82 WEST 1243 5698 7654 32 is not valid.
 
=={{header|Arturo}}==
 
<lang arturo>CountryIbanSizes #{
AL 28, AD 24, AT 20, AZ 28, BE 16
BH 22, BA 20, BR 29, BG 22, CR 21, HR 21, CY 28
CZ 24, DK 18, DO 28, EE 20, FO 18, FI 18, FR 27
GE 22, DE 22, GI 23, GR 27, GL 18, GT 28, HU 28
IS 26, IE 22, IL 23, IT 27, KZ 20, KW 30, LV 21
LB 28, LI 21, LT 20, LU 20, MK 19, MT 31, MR 27
MU 30, MC 27, MD 24, ME 22, NL 18, NO 15, PK 24
PS 29, PL 28, PT 25, RO 24, SM 27, SA 24, RS 22
SK 24, SI 19, ES 24, SE 24, CH 21, TN 24, TR 26
AE 23, GB 22, VG 24
}
 
Base36 $(map $(range 0 9) { toString & }) + $(map $(range 97 122) { uppercase|char & })
 
validIban [iban]{
iban $(replace iban " " "")
 
if $(not|isMatch iban "/[\dA-Z]+$/") { return false }
 
if $(size iban)!=CountryIbanSizes.[$(slice iban 0 2)] { return false }
 
iban $(slice iban 4 $(size iban)) + $(slice iban 0 4)
iban $(join $(map $(characters iban) { toString $(find Base36 &)}) "")
iban $(toNumber iban)
 
return iban%97=1
}
 
loop #("GB82 WEST 1234 5698 7654 32" "GB82 TEST 1234 5698 7654 32") {
print & + " => validation: " + $(validIban &)
}
</lang>
 
{{out}}
 
<pre>GB82 WEST 1234 5698 7654 32 => validation: true
GB82 TEST 1234 5698 7654 32 => validation: false</pre>
=={{header|AutoHotkey}}==