Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / HTML, JavaScript, VBScript, CSS Новый топик    Ответить
 опять вопрос по регулярке  [new]
andron81
Member

Откуда: Смоленск
Сообщений: 725
Добрый всем день.

Продвигается изучение регулярных выражений (на js). А нужно пропускать или ругать время.
Пытаюсь вот так :
((\d{0,2}):(\d{0,2}):(\d{0,2}))|(\d{0,2}):(\d{0,2})|(\d{0,2}):|(\d{0,2})$

нужно "отрегулировать" выражения времени, но не совсем тупо ЧЧ:ММ:СС, а пропустить ещё и такие вариации :

00:00:00 - хорошо
00:00 - хорошо
00 - хорошо
всевозможные , что ниже так же должны пропускаться как хорошо.
:: - хорошо
0:0: - хорошо
0: - хорошо
::0 - хорошо

а теперь что не могу понять как сделать. Не могу строго указать что между ":" может стоять только от 0 до 2 цифр, если больше , то надо отругать.
Пример :
000:00:00 - плохо
000 - плохо
0:001:01 - плохо
...
и т.д.
22 фев 18, 11:07    [21210508]     Ответить | Цитировать Сообщить модератору
 Re: опять вопрос по регулярке  [new]
krvsa
Member

Откуда: г Волжский
Сообщений: 13153
andron81
нужно "отрегулировать" выражения времени, но не совсем тупо ЧЧ:ММ:СС, а пропустить ещё и такие вариации :

00:00:00 - хорошо
00:00 - хорошо
00 - хорошо
всевозможные , что ниже так же должны пропускаться как хорошо.
:: - хорошо
0:0: - хорошо
0: - хорошо
::0 - хорошо

а теперь что не могу понять как сделать. Не могу строго указать что между ":" может стоять только от 0 до 2 цифр, если больше , то надо отругать.
Пример :
000:00:00 - плохо
000 - плохо
0:001:01 - плохо
...
и т.д.

Про "и т.д." не совсем понятно...
А по перечисленным случаям, как вариант...

var a=[
	'00:00:00',
	'00:00',
	'00',
	'::',
	'0:0:',
	'0:',
	'::0',
	'000:00:00',
	'000',
	'0:001:01'
];
var re=/^(\d\d?)?(:\d?\d?)?(:\d?\d?)?$/;
for (var i=0; i<a.length; i++) {
	alert(a[i]+' - '+re.test(a[i]));
};
22 фев 18, 11:31    [21210607]     Ответить | Цитировать Сообщить модератору
 Re: опять вопрос по регулярке  [new]
krvsa
Member

Откуда: г Волжский
Сообщений: 13153
Или так...

var a=[
	'00:00:00',
	'00:00',
	'00',
	'::',
	'0:0:',
	'0:',
	'::0',
	'000:00:00',
	'000',
	'0:001:01'
];
var re=/^\d?\d?(:\d?\d?)?(:\d?\d?)?$/;
for (var i=0; i<a.length; i++) {
	alert(a[i]+' - '+re.test(a[i]));
};
22 фев 18, 11:34    [21210620]     Ответить | Цитировать Сообщить модератору
 Re: опять вопрос по регулярке  [new]
krvsa
Member

Откуда: г Волжский
Сообщений: 13153
Еще укорочу...

var a=[
	'00:00:00',
	'00:00',
	'00',
	'::',
	'0:0:',
	'0:',
	'::0',
	'000:00:00',
	'000',
	'0:001:01'
];
var re=/^\d?\d?(:\d?\d?){0,2}$/;
for (var i=0; i<a.length; i++) {
	alert(a[i]+' - '+re.test(a[i]));
};
22 фев 18, 11:37    [21210628]     Ответить | Цитировать Сообщить модератору
 Re: опять вопрос по регулярке  [new]
andron81
Member

Откуда: Смоленск
Сообщений: 725
krvsa
Про "и т.д." не совсем понятно...


имелось ввиду , что числа в строке должны содержать цифры в количестве от 0 до 2. не более. три и выше регулярка должна браковать
просто перечислять их все не хотелось.
22 фев 18, 11:45    [21210664]     Ответить | Цитировать Сообщить модератору
 Re: опять вопрос по регулярке  [new]
andron81
Member

Откуда: Смоленск
Сообщений: 725
krvsa,

похоже то что надо . вы маэстро ! спасибо
22 фев 18, 11:49    [21210674]     Ответить | Цитировать Сообщить модератору
Все форумы / HTML, JavaScript, VBScript, CSS Ответить