ipv4.js 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. "use strict";
  2. var __importDefault = (this && this.__importDefault) || function (mod) {
  3. return (mod && mod.__esModule) ? mod : { "default": mod };
  4. };
  5. Object.defineProperty(exports, "__esModule", { value: true });
  6. const benchmark_1 = __importDefault(require("benchmark"));
  7. const suite = new benchmark_1.default.Suite("ipv4");
  8. const DATA = "127.0.0.1";
  9. const ipv4RegexA = /^(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))$/;
  10. const ipv4RegexB = /^(?:(?:(?=(25[0-5]))\1|(?=(2[0-4][0-9]))\2|(?=(1[0-9]{2}))\3|(?=([0-9]{1,2}))\4)\.){3}(?:(?=(25[0-5]))\5|(?=(2[0-4][0-9]))\6|(?=(1[0-9]{2}))\7|(?=([0-9]{1,2}))\8)$/;
  11. const ipv4RegexC = /^(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)\.){3}(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)$/;
  12. const ipv4RegexD = /^(\b25[0-5]|\b2[0-4][0-9]|\b[01]?[0-9][0-9]?)(\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/;
  13. const ipv4RegexE = /^((25[0-5]|(2[0-4]|1\d|[1-9]|)\d)\.){3}(25[0-5]|(2[0-4]|1\d|[1-9]|)\d)$/;
  14. const ipv4RegexF = /^((25[0-5]|(2[0-4]|1\d|[1-9]|)\d)\.?\b){4}$/;
  15. const ipv4RegexG = /^((25[0-5]|(2[0-4]|1\d|[1-9]|)\d)(\.(?!$)|$)){4}$/;
  16. const ipv4RegexH = /^((25[0-5]|(2[0-4]|1[0-9]|[1-9]|)[0-9])(\.(?!$)|$)){4}$/;
  17. const ipv4RegexI = /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/;
  18. suite
  19. .add("A", () => {
  20. return ipv4RegexA.test(DATA);
  21. })
  22. .add("B", () => {
  23. return ipv4RegexB.test(DATA);
  24. })
  25. .add("C", () => {
  26. return ipv4RegexC.test(DATA);
  27. })
  28. .add("D", () => {
  29. return ipv4RegexD.test(DATA);
  30. })
  31. .add("E", () => {
  32. return ipv4RegexE.test(DATA);
  33. })
  34. .add("F", () => {
  35. return ipv4RegexF.test(DATA);
  36. })
  37. .add("G", () => {
  38. return ipv4RegexG.test(DATA);
  39. })
  40. .add("H", () => {
  41. return ipv4RegexH.test(DATA);
  42. })
  43. .add("I", () => {
  44. return ipv4RegexI.test(DATA);
  45. })
  46. .on("cycle", (e) => {
  47. console.log(`${suite.name}: ${e.target}`);
  48. });
  49. exports.default = {
  50. suites: [suite],
  51. };
  52. if (require.main === module) {
  53. suite.run();
  54. }