isIMEI.js 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", {
  3. value: true
  4. });
  5. exports.default = isIMEI;
  6. var _assertString = _interopRequireDefault(require("./util/assertString"));
  7. function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
  8. var imeiRegexWithoutHypens = /^[0-9]{15}$/;
  9. var imeiRegexWithHypens = /^\d{2}-\d{6}-\d{6}-\d{1}$/;
  10. function isIMEI(str, options) {
  11. (0, _assertString.default)(str);
  12. options = options || {};
  13. // default regex for checking imei is the one without hyphens
  14. var imeiRegex = imeiRegexWithoutHypens;
  15. if (options.allow_hyphens) {
  16. imeiRegex = imeiRegexWithHypens;
  17. }
  18. if (!imeiRegex.test(str)) {
  19. return false;
  20. }
  21. str = str.replace(/-/g, '');
  22. var sum = 0,
  23. mul = 2,
  24. l = 14;
  25. for (var i = 0; i < l; i++) {
  26. var digit = str.substring(l - i - 1, l - i);
  27. var tp = parseInt(digit, 10) * mul;
  28. if (tp >= 10) {
  29. sum += tp % 10 + 1;
  30. } else {
  31. sum += tp;
  32. }
  33. if (mul === 1) {
  34. mul += 1;
  35. } else {
  36. mul -= 1;
  37. }
  38. }
  39. var chk = (10 - sum % 10) % 10;
  40. if (chk !== parseInt(str.substring(14, 15), 10)) {
  41. return false;
  42. }
  43. return true;
  44. }
  45. module.exports = exports.default;
  46. module.exports.default = exports.default;