Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   регулярное вырежние (https://javascript.ru/forum/misc/73997-regulyarnoe-vyrezhnie.html)

mortido 04.06.2018 23:30

регулярное вырежние
 
Всем привет. Никак не могу придумать регулярное выражение для проверки диапозонов ip адресов в таком виде 31.173.80.0 - 31.173.87.255. Регулярное выражение должно именно проверять формат. То есть, 4 числа, каждое заканчивается точкой, кроме последнего, затем тире, и тоже самое. Как такое сделать?

Aetae 04.06.2018 23:43

/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}-\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/

рони 04.06.2018 23:48

mortido,
var reg = /\b(([01]?\d?\d|2[0-4]\d|25[0-5])\.){3}([01]?\d?\d|2[0-4]\d|25[0-5])(\s*\-\s*)(([01]?\d?\d|2[0-4]\d|25[0-5])\.){3}([01]?\d?\d|2[0-4]\d|25[0-5])\b/;
var str = "31.173.80.0 - 31.173.87.255"
alert(reg.test(str));//true
str = "31.17300.80.0 - 31.173.87.255"
alert(reg.test(str));//false


RegExp for matching Decimal IP

Alexandroppolus 05.06.2018 11:26

взял регекс рони и ради интереса попробовал максимально сократить
var reg = /^\b((\b|\s*-\s*)\b((\b|\.)([01]?\d?\d|2[0-4]\d|25[0-5])){4}){2}$/;
reg.test(str);


это для проверки, что текст содержит только диапазон ip адресов.
если же текст содержит что-то ещё и надо выловить диапазон, то убрать ^ и $

j0hnik 05.06.2018 11:31

Alexandroppolus,
неплохо ) на кодварсах кода решаешь регулярки обязательно кто-то прям в минимум символов уложился, даж все аргументы до одного символа сократил.

Alexandroppolus 05.06.2018 11:36

j0hnik,
тут главное слишком не увлекаться, а то можно написать очень хреновый регекс

mortido 05.06.2018 17:22

Спасибо, работает.


Часовой пояс GMT +3, время: 16:35.