Codeur Senior

CHALLENGE JavaScript #58 (Débutant)

Chaque Lundi, je vous propose le "5 min JavaScript Challenge"...

J'avais l'habitude de faire l'exercice avec les développeurs qui me suivent par email...
mais maintenant je vais proposer l'exercice à vous aussi, sur YouTube.
PERSONNE ne sera épargné... 😏

La seule règle ?

Vous avez 5 minutes MAX pour en venir à bout... sinon il va falloir revoir les fondamentaux.

Où réaliser le challenge ?

Dans la console de votre navigateur, tout simplement !

METTEZ VOTRE MEILLEURE RÉPONSE DANS LES COMMENTAIRES 👇

2 years ago | [YT] | 31



@thierrytene8510

function isValidIP(ip){ let tabIP = ip.split(".") if (tabIP.length == 4){ for (let i=0; i<tabIP.length;i++){ if(1*tabIP[i]<0 || 1*tabIP[i]>255) return false } return true } return false }

2 years ago (edited) | 1

@ameltriki2497

Je pense que travailler avec les expressions régulières demeure le plus approprié. Mais pour fournir une solution différente: function isValidIP(ip){ return ip.split('.').length==4 && (ip.split('.').filter(num =>isNaN(num) || num==""||num.includes(' ') || (num.length>3) || num <0 || num>255)).length==0; }

2 years ago | 1

@clementtroibarinho6460

function isValidIp(ip: string): boolean { const regex = new RegExp("^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$"); return regex.test(ip); }

2 years ago | 3

@orionaes

Je préfère également utiliser une (simple & lisible) expression régulière : function isValidIP(ip) { const regex = /^(\d{1,3}\.){3}\d{1,3}$/; return regex.test(ip); }

2 years ago (edited) | 1

@davypaterne

function isValidIP(ip){ const tab = ip.split('.'); if(tab.length !==4) return false; for(let i =0; i<tab.length;i++){ const num = parseInt(tab[i],10); if(num <0 || num >255 || isNaN(num)) return false; } return true; }

2 years ago | 0

@lhoussainebouganfou

function isValidIP(ip){ const tab = ip.split('.'); if(tab.length !==4) return false; for(let i =0; i<tab.length;i++){ if(tab[i] < 0 || tab[i] >255) return false; } return true; }

2 years ago | 0

@melch61

Ma proposition : function isValid(ip) { let regex = /^(?<octet1>\d{1,3})\.(?<octet2>\d{1,3})\.(?<octet3>\d{1,3})\.(?<octet4>\d{1,3})$/; let match = regex.exec(ip); if (match) { return Object.values(match.groups).every(octet => { return octet >=0 && octet <=255; }); } else { return false; } }

2 years ago | 0

@davypaterne

function isValidIP(ip){ const tab = ip.split('.'); if(tab.length !==4) return false; for(let i =0; i<tab.length;i++){ if(tab[i].length<=3 && tab[i].length>=0){ const num = parseInt(tab[i],10); if(num < 0 || num >255 || isNaN(num )) return false; } else return false; } return true; }

2 years ago | 0

@Cycle9898

function isValidIP(ip) { return ip.split('.').length == 4 && ip.split('.').every(n => +n >= 0 && +n <= 255 && n.length <= 3); }

2 years ago | 2  

@belewen

function isValid(ip){ return ip .split(".") .map(carac => Number.parseInt(carac)) .every(number => number>=0 && number<=255) }

2 years ago | 0

@BastienFacquet

Je vois ici beaucoup de code en regex mais en terme de performance ca casse le mythe les regex, voici pour exemple : ip = '255.0.0.233'; function isIp(ip){ let a = ip.split('.'); if(a.length === 4) return false; return a.filter(e => e >= 0 && e <= 255).length === 4; } const isValidIP = (ip) => /^(\d{1,3}\.){3}\d{1,3}$/.test(ip) && ip.split('.').every((octet) => octet >= 0 && octet <= 255); function getTimeAfterRepeat(fn, e){ d = new Date(); for(let i = 0; i < 1000000; i++){ fn(e); } return new Date() - d; } results = { arrayFunction : getTimeAfterRepeat(isIp, ip), regex : getTimeAfterRepeat(isValidIP, ip) }; //=> {arrayFunction: 35, regex: 83}

1 year ago | 0  

@pxly69

Voici ma proposition : return ip.split(".").length == 4 && ip.split(".").every(e => e>=0 && e<=255);

2 years ago | 0