PATH:
opt
/
bitninja-dispatcher
/
node_modules
/
validator
/
es
/
lib
import assertString from './util/assertString'; var isin = /^[A-Z]{2}[0-9A-Z]{9}[0-9]$/; // this link details how the check digit is calculated: // https://www.isin.org/isin-format/. it is a little bit // odd in that it works with digits, not numbers. in order // to make only one pass through the ISIN characters, the // each alpha character is handled as 2 characters within // the loop. export default function isISIN(str) { assertString(str); if (!isin.test(str)) { return false; } var _double = true; var sum = 0; // convert values for (var i = str.length - 2; i >= 0; i--) { if (str[i] >= 'A' && str[i] <= 'Z') { var value = str[i].charCodeAt(0) - 55; var lo = value % 10; var hi = Math.trunc(value / 10); // letters have two digits, so handle the low order // and high order digits separately. for (var _i = 0, _arr = [lo, hi]; _i < _arr.length; _i++) { var digit = _arr[_i]; if (_double) { if (digit >= 5) { sum += 1 + (digit - 5) * 2; } else { sum += digit * 2; } } else { sum += digit; } _double = !_double; } } else { var _digit = str[i].charCodeAt(0) - '0'.charCodeAt(0); if (_double) { if (_digit >= 5) { sum += 1 + (_digit - 5) * 2; } else { sum += _digit * 2; } } else { sum += _digit; } _double = !_double; } } var check = Math.trunc((sum + 9) / 10) * 10 - sum; return +str[str.length - 1] === check; }
[-] isISO31661Alpha3.js
[edit]
[-] isBtcAddress.js
[edit]
[-] isBoolean.js
[edit]
[-] isHexColor.js
[edit]
[-] equals.js
[edit]
[-] isUppercase.js
[edit]
[-] isLocale.js
[edit]
[-] toInt.js
[edit]
[-] toDate.js
[edit]
[-] isIn.js
[edit]
[-] isDivisibleBy.js
[edit]
[-] isEthereumAddress.js
[edit]
[-] isMagnetURI.js
[edit]
[-] toBoolean.js
[edit]
[-] isHexadecimal.js
[edit]
[-] isVAT.js
[edit]
[-] isHSL.js
[edit]
[+]
..
[-] isMobilePhone.js
[edit]
[-] isMD5.js
[edit]
[-] stripLow.js
[edit]
[-] contains.js
[edit]
[-] isMimeType.js
[edit]
[-] isIdentityCard.js
[edit]
[-] blacklist.js
[edit]
[-] isJSON.js
[edit]
[-] isHash.js
[edit]
[-] isPassportNumber.js
[edit]
[-] isURL.js
[edit]
[-] isISO31661Alpha2.js
[edit]
[-] toFloat.js
[edit]
[-] isNumeric.js
[edit]
[-] isVariableWidth.js
[edit]
[-] isUUID.js
[edit]
[-] isBIC.js
[edit]
[-] isDate.js
[edit]
[-] isIPRange.js
[edit]
[-] isStrongPassword.js
[edit]
[-] unescape.js
[edit]
[-] isISRC.js
[edit]
[-] isSemVer.js
[edit]
[-] isInt.js
[edit]
[-] isEAN.js
[edit]
[-] alpha.js
[edit]
[-] isISSN.js
[edit]
[-] rtrim.js
[edit]
[-] isPostalCode.js
[edit]
[-] isSurrogatePair.js
[edit]
[-] isMongoId.js
[edit]
[-] isBase58.js
[edit]
[-] isCreditCard.js
[edit]
[-] isIMEI.js
[edit]
[-] isFullWidth.js
[edit]
[-] isISO8601.js
[edit]
[-] isBase64.js
[edit]
[-] isHalfWidth.js
[edit]
[-] isIBAN.js
[edit]
[-] isByteLength.js
[edit]
[-] isDataURI.js
[edit]
[-] isAfter.js
[edit]
[-] isISIN.js
[edit]
[-] normalizeEmail.js
[edit]
[-] isAlpha.js
[edit]
[-] isBefore.js
[edit]
[+]
util
[-] isCurrency.js
[edit]
[-] isRFC3339.js
[edit]
[-] isJWT.js
[edit]
[-] isWhitelisted.js
[edit]
[-] isMACAddress.js
[edit]
[-] isISO4217.js
[edit]
[-] isOctal.js
[edit]
[-] ltrim.js
[edit]
[-] isLength.js
[edit]
[-] whitelist.js
[edit]
[-] isDecimal.js
[edit]
[-] isRgbColor.js
[edit]
[-] isLatLong.js
[edit]
[-] isPort.js
[edit]
[-] isMultibyte.js
[edit]
[-] matches.js
[edit]
[-] isTaxID.js
[edit]
[-] isBase32.js
[edit]
[-] trim.js
[edit]
[-] isAlphanumeric.js
[edit]
[-] isAscii.js
[edit]
[-] isSlug.js
[edit]
[-] isEmpty.js
[edit]
[-] escape.js
[edit]
[-] isEmail.js
[edit]
[-] isLowercase.js
[edit]
[-] isFloat.js
[edit]
[-] isISBN.js
[edit]
[-] isIP.js
[edit]
[-] isFQDN.js
[edit]
[-] isLicensePlate.js
[edit]