isIp.js 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. exports = function(str) {
  2. return exports.v4(str) || exports.v6(str);
  3. };
  4. var v4 =
  5. '(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}';
  6. var regV4 = new RegExp('^'.concat(v4, '$'));
  7. var v6seg = '[a-fA-F\\d]{1,4}';
  8. var v6 = [
  9. '(',
  10. '(?:'.concat(v6seg, ':){7}(?:').concat(v6seg, '|:)|'),
  11. '(?:'
  12. .concat(v6seg, ':){6}(?:')
  13. .concat(v4, '|:')
  14. .concat(v6seg, '|:)|'),
  15. '(?:'
  16. .concat(v6seg, ':){5}(?::')
  17. .concat(v4, '|(:')
  18. .concat(v6seg, '){1,2}|:)|'),
  19. '(?:'
  20. .concat(v6seg, ':){4}(?:(:')
  21. .concat(v6seg, '){0,1}:')
  22. .concat(v4, '|(:')
  23. .concat(v6seg, '){1,3}|:)|'),
  24. '(?:'
  25. .concat(v6seg, ':){3}(?:(:')
  26. .concat(v6seg, '){0,2}:')
  27. .concat(v4, '|(:')
  28. .concat(v6seg, '){1,4}|:)|'),
  29. '(?:'
  30. .concat(v6seg, ':){2}(?:(:')
  31. .concat(v6seg, '){0,3}:')
  32. .concat(v4, '|(:')
  33. .concat(v6seg, '){1,5}|:)|'),
  34. '(?:'
  35. .concat(v6seg, ':){1}(?:(:')
  36. .concat(v6seg, '){0,4}:')
  37. .concat(v4, '|(:')
  38. .concat(v6seg, '){1,6}|:)|'),
  39. '(?::((?::'
  40. .concat(v6seg, '){0,5}:')
  41. .concat(v4, '|(?::')
  42. .concat(v6seg, '){1,7}|:))'),
  43. ')(%[0-9a-zA-Z]{1,})?'
  44. ].join('');
  45. var regV6 = new RegExp('^'.concat(v6, '$'));
  46. exports.v4 = function(str) {
  47. return regV4.test(str);
  48. };
  49. exports.v6 = function(str) {
  50. return regV6.test(str);
  51. };
  52. module.exports = exports;