2015-11-21 7 views
4

Привет, я использую laravel, и я хочу проверить создание регулярного выражения, которое позволит использовать определенный формат для продолжительности (не время, поскольку это может превышать 24-часовой формат). так, например, 124 часа 30 минут и 24 сек будут представлены следующим образом 124: 30: 24. Но первое значение может быть более 1 символа и числа, второе значение должно быть двоеточием, третье значение должно быть 2 символа и число, четвертое значение должно быть двоеточием, а пятое значение должно быть 2 символа и числа.создать регулярное выражение для соответствия формату 00:00:00 в течение продолжительности (а не времени)

Любые идеи, как я могу создать регулярное выражение, которое достигнет этого, чтобы вставить в следующий массив?

$rules = array(
    'duration'   => 'required|regex:/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d).+$/' 
); 

недопустимые примеры:

alphacharacters e.g. qwerty 
0:0:0 
0: 
0 
1 
30:211:211 
30:2111:2111 
a:d:d 
asd 

действительные примеры:

01:00:00 
1:00:00 
30:21:21 
330:21:21 
1330:21:21 
11330:21:21 
basically any amount of hours. 
+0

Вы могли бы добавить пример, который действителен и недействителен, пожалуйста? –

+0

@LouisBarranqueiro сделали – 001221

ответ

6

Дайте ваши примеры это регулярное выражение должно хватить:

^\d+:\d{2}:\d{2}$ 

Демо: https://regex101.com/r/kO4xN2/2

\d это число
+ является квантор означает один или несколько из предыдущего символа (или группы)
{} представляет собой количество символов, чтобы (вы можете дать ему диапазон, а)
^$ являются якоря, поэтому строка должна быть точным совпадением, если в строке больше содержимого, это должно быть удалено.

+0

большой, который сработал! – 001221