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

164
12 февраля 2019, 01:30

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

Answer 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));

Answer 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)));

READ ALSO
Релизация flatMap JavaScript

Релизация flatMap JavaScript

При добавлении к конструктору Array свойства flatMap нужно задать определенный контекстКак это лучше сделать?

318
Валидация скрытого поля на jquery

Валидация скрытого поля на jquery

Как сделать чтобы работала валидация required для одного конкретного скрытого поля из массива полей для загрузки, например

220
Как заменить текст в тегах?

Как заменить текст в тегах?

При выполнении функции js

216
Прописать команды в DevTools console

Прописать команды в DevTools console

Мне нужно через консоль написать команды, изменяющие параметры отдельных элементов на веб страницеКак сделать это вручную, через вкладку...

183