Страницы

Поиск по вопросам

воскресенье, 9 февраля 2020 г.

Проверка целой строки с помощью регулярного выражения

#javascript #регулярные_выражения




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
    


Ответы

Ответ 1



Нужно добавить ^ (начало строки) в начало и $ (конец строки) в конец шаблона для проверки на начало и конец строки. Без ^ и $ находится подстрока. 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));

Ответ 2



Лучше обойтись без регулярных выражений: 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)));

Комментариев нет:

Отправить комментарий