ipv4.js 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. import Benchmark from "benchmark";
  2. const suite = new Benchmark.Suite("ipv4");
  3. const DATA = "127.0.0.1";
  4. 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}))$/;
  5. 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)$/;
  6. 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)$/;
  7. 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}$/;
  8. 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)$/;
  9. const ipv4RegexF = /^((25[0-5]|(2[0-4]|1\d|[1-9]|)\d)\.?\b){4}$/;
  10. const ipv4RegexG = /^((25[0-5]|(2[0-4]|1\d|[1-9]|)\d)(\.(?!$)|$)){4}$/;
  11. const ipv4RegexH = /^((25[0-5]|(2[0-4]|1[0-9]|[1-9]|)[0-9])(\.(?!$)|$)){4}$/;
  12. 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])$/;
  13. suite
  14. .add("A", () => {
  15. return ipv4RegexA.test(DATA);
  16. })
  17. .add("B", () => {
  18. return ipv4RegexB.test(DATA);
  19. })
  20. .add("C", () => {
  21. return ipv4RegexC.test(DATA);
  22. })
  23. .add("D", () => {
  24. return ipv4RegexD.test(DATA);
  25. })
  26. .add("E", () => {
  27. return ipv4RegexE.test(DATA);
  28. })
  29. .add("F", () => {
  30. return ipv4RegexF.test(DATA);
  31. })
  32. .add("G", () => {
  33. return ipv4RegexG.test(DATA);
  34. })
  35. .add("H", () => {
  36. return ipv4RegexH.test(DATA);
  37. })
  38. .add("I", () => {
  39. return ipv4RegexI.test(DATA);
  40. })
  41. .on("cycle", (e) => {
  42. console.log(`${suite.name}: ${e.target}`);
  43. });
  44. export default {
  45. suites: [suite],
  46. };
  47. if (require.main === module) {
  48. suite.run();
  49. }