IBAN: Difference between revisions

1,305 bytes added ,  8 years ago
(→‎{{header|Common Lisp}}: better check for IBAN-characters)
Line 1,563:
SA03 8000 0000 6080 1016 7519 is valid: true
CH93 0076 2011 6238 5295 7 is valid: true
=={{header|JavaScript}}==
<lang JavaScript>var ibanLen = {
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
}
 
function isValid(iban) {
iban = iban.replace(/\s/g, '')
if (!iban.match(/^[\dA-Z]+$/)) return false
var len = iban.length
if (len != ibanLen[iban.substr(0,2)]) return false
iban = iban.substr(4) + iban.substr(0,4)
for (var s='', i=0; i<len; i+=1) s+=parseInt(iban.charAt(i),36)
for (var m=0; s; s=s.substr(13)) m=(m+s.substr(0,13))%97
return m == 1
}
document.write(isValid('GB82 WEST 1234 5698 7654 32'), '<br>') // true
document.write(isValid('GB82 WEST 1.34 5698 7654 32'), '<br>') // false
document.write(isValid('GB82 WEST 1234 5698 7654 325'), '<br>') // false
document.write(isValid('GB82 TEST 1234 5698 7654 32'), '<br>') // false
document.write(isValid('SA03 8000 0000 6080 1016 7519'), '<br>') // true
</lang>
{{out}}
true<br>
false<br>
false<br>
false<br>
true
 
=={{header|jq}}==
This implementation requires a version of jq with <tt>gsub</tt>.
124

edits