var re = /((25[0-5]|2[0-4]\d|[01]?\d?\d)\.){3}(25[0-5]|2[0-4]\d|[01]?\d?\d)/;
var str4 = "1300.6.7.8";
console.log(re.test(str4));
почему тест выдаёт тру, объясните пожалуйста. цель - проверяю IP v.4 address
Нужно добавить ^ (начало строки) в начало и $ (конец строки) в конец шаблона для проверки на начало и конец строки. Без ^ и $ находится подстрока.
var re = /((25[0-5]|2[0-4]\d|[01]?\d?\d)\.){3}(25[0-5]|2[0-4]\d|[01]?\d?\d)/;
var str4 = "1300.6.7.8";
console.log(str4.match(re));
var re2 = /^(((25[0-5]|2[0-4]\d|[01]?\d?\d)\.){3}(25[0-5]|2[0-4]\d|[01]?\d?\d))$/;
console.log(str4.match(re2));
console.log(re2.test(str4));
Лучше обойтись без регулярных выражений:
function isIPv4(ip) {
let parts = ip.split('.');
if (parts.length !== 4) return false;
return parts.map(p => +p)
.every(p => p >= 0 && p < 256);
}
[
'127.0.0.1',
'1.2a.3.4',
'256.0.0.0'
].forEach(ip => console.log(ip, isIPv4(ip)));
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости