регулярное вырежние
Всем привет. Никак не могу придумать регулярное выражение для проверки диапозонов ip адресов в таком виде 31.173.80.0 - 31.173.87.255. Регулярное выражение должно именно проверять формат. То есть, 4 числа, каждое заканчивается точкой, кроме последнего, затем тире, и тоже самое. Как такое сделать?
|
/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}-\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/ |
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 |
взял регекс рони и ради интереса попробовал максимально сократить
var reg = /^\b((\b|\s*-\s*)\b((\b|\.)([01]?\d?\d|2[0-4]\d|25[0-5])){4}){2}$/; reg.test(str); это для проверки, что текст содержит только диапазон ip адресов. если же текст содержит что-то ещё и надо выловить диапазон, то убрать ^ и $ |
Alexandroppolus,
неплохо ) на кодварсах кода решаешь регулярки обязательно кто-то прям в минимум символов уложился, даж все аргументы до одного символа сократил. |
j0hnik,
тут главное слишком не увлекаться, а то можно написать очень хреновый регекс |
Спасибо, работает.
|
Часовой пояс GMT +3, время: 16:35. |