Regular Expressions 101

Save & Share

Flavor

  • PCRE2 (PHP >=7.3)
  • PCRE (PHP <7.3)
  • ECMAScript (JavaScript)
  • Python
  • Golang
  • Java 8

Function

  • Match
  • Substitution
  • List
  • Unit Tests
/
^(((\*|(\d\d?))(\/\d\d?)?)|(\d\d?\-\d\d?))(,(((\*|(\d\d?))(\/\d\d?)?)|(\d\d?\-\d\d?)))*\s(((\*|(\d\d?))(\/\d\d?)?)|(\d\d?\-\d\d?))(,(((\*|(\d\d?))(\/\d\d?)?)|(\d\d?\-\d\d?)))*\s(((\*|(\d\d?))(\/\d\d?)?)|(\d\d?\-\d\d?))(,(((\*|(\d\d?))(\/\d\d?)?)|(\d\d?\-\d\d?)))*\s(\?|(((\*|(\d\d?L?))(\/\d\d?)?)|(\d\d?L?\-\d\d?L?)|L|(\d\d?W))(,(((\*|(\d\d?L?))(\/\d\d?)?)|(\d\d?L?\-\d\d?L?)|L|(\d\d?W)))*)\s(((\*|(\d|10|11|12|JAN|FEB|MAR|APR|MAY|JUN|JUL|AUG|SEP|OCT|NOV|DEC))(\/\d\d?)?)|((\d|10|11|12|JAN|FEB|MAR|APR|MAY|JUN|JUL|AUG|SEP|OCT|NOV|DEC)\-(\d|10|11|12|JAN|FEB|MAR|APR|MAY|JUN|JUL|AUG|SEP|OCT|NOV|DEC)))(,(((\*|(\d|10|11|12|JAN|FEB|MAR|APR|MAY|JUN|JUL|AUG|SEP|OCT|NOV|DEC))(\/\d\d?)?)|((\d|10|11|12|JAN|FEB|MAR|APR|MAY|JUN|JUL|AUG|SEP|OCT|NOV|DEC)\-(\d|10|11|12|JAN|FEB|MAR|APR|MAY|JUN|JUL|AUG|SEP|OCT|NOV|DEC))))*\s(((\*|([0-7]|MON|TUE|WED|THU|FRI|SAT|SUN)L?)(\/\d\d?)?)|(([0-7]|MON|TUE|WED|THU|FRI|SAT|SUN)L?\-([0-7]|MON|TUE|WED|THU|FRI|SAT|SUN)L?)|([0-7]|MON|TUE|WED|THU|FRI|SAT|SUN)L?#([1-5]))(,(((\*|([0-7]|MON|TUE|WED|THU|FRI|SAT|SUN)L?)(\/\d\d?)?)|(([0-7]|MON|TUE|WED|THU|FRI|SAT|SUN)L?\-([0-7]|MON|TUE|WED|THU|FRI|SAT|SUN)L?)|([0-7]|MON|TUE|WED|THU|FRI|SAT|SUN)L?#([1-5])))*$
/
gmi
^ asserts position at start of a line
1st Capturing Group
(((\*|(\d\d?))(\/\d\d?)?)|(\d\d?\-\d\d?))
1st Alternative
((\*|(\d\d?))(\/\d\d?)?)
2nd Capturing Group
((\*|(\d\d?))(\/\d\d?)?)
3rd Capturing Group
(\*|(\d\d?))
1st Alternative
\*
\* matches the character * with index 4210 (2A16 or 528) literally (case insensitive)
2nd Alternative
(\d\d?)
4th Capturing Group
(\d\d?)
\d matches a digit (equivalent to [0-9])
\d
matches a digit (equivalent to [0-9])
? matches the previous token between zero and one times, as many times as possible, giving back as needed (greedy)
5th Capturing Group
(\/\d\d?)?
? matches the previous token between zero and one times, as many times as possible, giving back as needed (greedy)
\/ matches the character / with index 4710 (2F16 or 578) literally (case insensitive)
\d matches a digit (equivalent to [0-9])
\d
matches a digit (equivalent to [0-9])
? matches the previous token between zero and one times, as many times as possible, giving back as needed (greedy)
2nd Alternative
(\d\d?\-\d\d?)
6th Capturing Group
(\d\d?\-\d\d?)
\d matches a digit (equivalent to [0-9])
\d
matches a digit (equivalent to [0-9])
? matches the previous token between zero and one times, as many times as possible, giving back as needed (greedy)
\- matches the character - with index 4510 (2D16 or 558) literally (case insensitive)
\d matches a digit (equivalent to [0-9])
\d
matches a digit (equivalent to [0-9])
? matches the previous token between zero and one times, as many times as possible, giving back as needed (greedy)
7th Capturing Group
(,(((\*|(\d\d?))(\/\d\d?)?)|(\d\d?\-\d\d?)))*
* matches the previous token between zero and unlimited times, as many times as possible, giving back as needed (greedy)
A repeated capturing group will only capture the last iteration. Put a capturing group around the repeated group to capture all iterations or use a non-capturing group instead if you're not interested in the data
, matches the character , with index 4410 (2C16 or 548) literally (case insensitive)
8th Capturing Group
(((\*|(\d\d?))(\/\d\d?)?)|(\d\d?\-\d\d?))
1st Alternative
((\*|(\d\d?))(\/\d\d?)?)
9th Capturing Group
((\*|(\d\d?))(\/\d\d?)?)
10th Capturing Group
(\*|(\d\d?))
1st Alternative
\*
\* matches the character * with index 4210 (2A16 or 528) literally (case insensitive)
2nd Alternative
(\d\d?)
11th Capturing Group
(\d\d?)
\d matches a digit (equivalent to [0-9])
\d
matches a digit (equivalent to [0-9])
? matches the previous token between zero and one times, as many times as possible, giving back as needed (greedy)
12th Capturing Group
(\/\d\d?)?
? matches the previous token between zero and one times, as many times as possible, giving back as needed (greedy)
\/ matches the character / with index 4710 (2F16 or 578) literally (case insensitive)
\d matches a digit (equivalent to [0-9])
\d
matches a digit (equivalent to [0-9])
? matches the previous token between zero and one times, as many times as possible, giving back as needed (greedy)
2nd Alternative
(\d\d?\-\d\d?)
13th Capturing Group
(\d\d?\-\d\d?)
\d matches a digit (equivalent to [0-9])
\d
matches a digit (equivalent to [0-9])
? matches the previous token between zero and one times, as many times as possible, giving back as needed (greedy)
\- matches the character - with index 4510 (2D16 or 558) literally (case insensitive)
\d matches a digit (equivalent to [0-9])
\d
matches a digit (equivalent to [0-9])
? matches the previous token between zero and one times, as many times as possible, giving back as needed (greedy)
\s matches any whitespace character (equivalent to [\r\n\t\f\v \u00a0\u1680\u2000-\u200a\u2028\u2029\u202f\u205f\u3000\ufeff])
14th Capturing Group
(((\*|(\d\d?))(\/\d\d?)?)|(\d\d?\-\d\d?))
1st Alternative
((\*|(\d\d?))(\/\d\d?)?)
15th Capturing Group
((\*|(\d\d?))(\/\d\d?)?)
16th Capturing Group
(\*|(\d\d?))
1st Alternative
\*
\* matches the character * with index 4210 (2A16 or 528) literally (case insensitive)
2nd Alternative
(\d\d?)
17th Capturing Group
(\d\d?)
\d matches a digit (equivalent to [0-9])
\d
matches a digit (equivalent to [0-9])
? matches the previous token between zero and one times, as many times as possible, giving back as needed (greedy)
18th Capturing Group
(\/\d\d?)?
? matches the previous token between zero and one times, as many times as possible, giving back as needed (greedy)
\/ matches the character / with index 4710 (2F16 or 578) literally (case insensitive)
\d matches a digit (equivalent to [0-9])
\d
matches a digit (equivalent to [0-9])
? matches the previous token between zero and one times, as many times as possible, giving back as needed (greedy)
2nd Alternative
(\d\d?\-\d\d?)
19th Capturing Group
(\d\d?\-\d\d?)
\d matches a digit (equivalent to [0-9])
\d
matches a digit (equivalent to [0-9])
? matches the previous token between zero and one times, as many times as possible, giving back as needed (greedy)
\- matches the character - with index 4510 (2D16 or 558) literally (case insensitive)
\d matches a digit (equivalent to [0-9])
\d
matches a digit (equivalent to [0-9])
? matches the previous token between zero and one times, as many times as possible, giving back as needed (greedy)
20th Capturing Group
(,(((\*|(\d\d?))(\/\d\d?)?)|(\d\d?\-\d\d?)))*
* matches the previous token between zero and unlimited times, as many times as possible, giving back as needed (greedy)
A repeated capturing group will only capture the last iteration. Put a capturing group around the repeated group to capture all iterations or use a non-capturing group instead if you're not interested in the data
, matches the character , with index 4410 (2C16 or 548) literally (case insensitive)
21st Capturing Group
(((\*|(\d\d?))(\/\d\d?)?)|(\d\d?\-\d\d?))
1st Alternative
((\*|(\d\d?))(\/\d\d?)?)
22nd Capturing Group
((\*|(\d\d?))(\/\d\d?)?)
23rd Capturing Group
(\*|(\d\d?))
1st Alternative
\*
\* matches the character * with index 4210 (2A16 or 528) literally (case insensitive)
2nd Alternative
(\d\d?)
24th Capturing Group
(\d\d?)
\d matches a digit (equivalent to [0-9])
\d
matches a digit (equivalent to [0-9])
? matches the previous token between zero and one times, as many times as possible, giving back as needed (greedy)
25th Capturing Group
(\/\d\d?)?
? matches the previous token between zero and one times, as many times as possible, giving back as needed (greedy)
\/ matches the character / with index 4710 (2F16 or 578) literally (case insensitive)
\d matches a digit (equivalent to [0-9])
\d
matches a digit (equivalent to [0-9])
? matches the previous token between zero and one times, as many times as possible, giving back as needed (greedy)
2nd Alternative
(\d\d?\-\d\d?)
26th Capturing Group
(\d\d?\-\d\d?)
\d matches a digit (equivalent to [0-9])
\d
matches a digit (equivalent to [0-9])
? matches the previous token between zero and one times, as many times as possible, giving back as needed (greedy)
\- matches the character - with index 4510 (2D16 or 558) literally (case insensitive)
\d matches a digit (equivalent to [0-9])
\d
matches a digit (equivalent to [0-9])
? matches the previous token between zero and one times, as many times as possible, giving back as needed (greedy)
\s matches any whitespace character (equivalent to [\r\n\t\f\v \u00a0\u1680\u2000-\u200a\u2028\u2029\u202f\u205f\u3000\ufeff])
27th Capturing Group
(((\*|(\d\d?))(\/\d\d?)?)|(\d\d?\-\d\d?))
1st Alternative
((\*|(\d\d?))(\/\d\d?)?)
28th Capturing Group
((\*|(\d\d?))(\/\d\d?)?)
29th Capturing Group
(\*|(\d\d?))
1st Alternative
\*
\* matches the character * with index 4210 (2A16 or 528) literally (case insensitive)
2nd Alternative
(\d\d?)
30th Capturing Group
(\d\d?)
\d matches a digit (equivalent to [0-9])
\d
matches a digit (equivalent to [0-9])
? matches the previous token between zero and one times, as many times as possible, giving back as needed (greedy)
31st Capturing Group
(\/\d\d?)?
? matches the previous token between zero and one times, as many times as possible, giving back as needed (greedy)
\/ matches the character / with index 4710 (2F16 or 578) literally (case insensitive)
\d matches a digit (equivalent to [0-9])
\d
matches a digit (equivalent to [0-9])
? matches the previous token between zero and one times, as many times as possible, giving back as needed (greedy)
2nd Alternative
(\d\d?\-\d\d?)
32nd Capturing Group
(\d\d?\-\d\d?)
\d matches a digit (equivalent to [0-9])
\d
matches a digit (equivalent to [0-9])
? matches the previous token between zero and one times, as many times as possible, giving back as needed (greedy)
\- matches the character - with index 4510 (2D16 or 558) literally (case insensitive)
\d matches a digit (equivalent to [0-9])
\d
matches a digit (equivalent to [0-9])
? matches the previous token between zero and one times, as many times as possible, giving back as needed (greedy)
33rd Capturing Group
(,(((\*|(\d\d?))(\/\d\d?)?)|(\d\d?\-\d\d?)))*
* matches the previous token between zero and unlimited times, as many times as possible, giving back as needed (greedy)
A repeated capturing group will only capture the last iteration. Put a capturing group around the repeated group to capture all iterations or use a non-capturing group instead if you're not interested in the data
, matches the character , with index 4410 (2C16 or 548) literally (case insensitive)
34th Capturing Group
(((\*|(\d\d?))(\/\d\d?)?)|(\d\d?\-\d\d?))
1st Alternative
((\*|(\d\d?))(\/\d\d?)?)
35th Capturing Group
((\*|(\d\d?))(\/\d\d?)?)
36th Capturing Group
(\*|(\d\d?))
1st Alternative
\*
\* matches the character * with index 4210 (2A16 or 528) literally (case insensitive)
2nd Alternative
(\d\d?)
37th Capturing Group
(\d\d?)
\d matches a digit (equivalent to [0-9])
\d
matches a digit (equivalent to [0-9])
? matches the previous token between zero and one times, as many times as possible, giving back as needed (greedy)
38th Capturing Group
(\/\d\d?)?
? matches the previous token between zero and one times, as many times as possible, giving back as needed (greedy)
\/ matches the character / with index 4710 (2F16 or 578) literally (case insensitive)
\d matches a digit (equivalent to [0-9])
\d
matches a digit (equivalent to [0-9])
? matches the previous token between zero and one times, as many times as possible, giving back as needed (greedy)
2nd Alternative
(\d\d?\-\d\d?)
39th Capturing Group
(\d\d?\-\d\d?)
\d matches a digit (equivalent to [0-9])
\d
matches a digit (equivalent to [0-9])
? matches the previous token between zero and one times, as many times as possible, giving back as needed (greedy)
\- matches the character - with index 4510 (2D16 or 558) literally (case insensitive)
\d matches a digit (equivalent to [0-9])
\d
matches a digit (equivalent to [0-9])
? matches the previous token between zero and one times, as many times as possible, giving back as needed (greedy)
\s matches any whitespace character (equivalent to [\r\n\t\f\v \u00a0\u1680\u2000-\u200a\u2028\u2029\u202f\u205f\u3000\ufeff])
40th Capturing Group
(\?|(((\*|(\d\d?L?))(\/\d\d?)?)|(\d\d?L?\-\d\d?L?)|L|(\d\d?W))(,(((\*|(\d\d?L?))(\/\d\d?)?)|(\d\d?L?\-\d\d?L?)|L|(\d\d?W)))*)
1st Alternative
\?
\? matches the character ? with index 6310 (3F16 or 778) literally (case insensitive)
2nd Alternative
(((\*|(\d\d?L?))(\/\d\d?)?)|(\d\d?L?\-\d\d?L?)|L|(\d\d?W))(,(((\*|(\d\d?L?))(\/\d\d?)?)|(\d\d?L?\-\d\d?L?)|L|(\d\d?W)))*
41st Capturing Group
(((\*|(\d\d?L?))(\/\d\d?)?)|(\d\d?L?\-\d\d?L?)|L|(\d\d?W))
1st Alternative
((\*|(\d\d?L?))(\/\d\d?)?)
42nd Capturing Group
((\*|(\d\d?L?))(\/\d\d?)?)
43rd Capturing Group
(\*|(\d\d?L?))
1st Alternative
\*
\* matches the character * with index 4210 (2A16 or 528) literally (case insensitive)
2nd Alternative
(\d\d?L?)
44th Capturing Group
(\d\d?L?)
\d matches a digit (equivalent to [0-9])
\d
matches a digit (equivalent to [0-9])
? matches the previous token between zero and one times, as many times as possible, giving back as needed (greedy)
L
matches the character L with index 7610 (4C16 or 1148) literally (case insensitive)
45th Capturing Group
(\/\d\d?)?
? matches the previous token between zero and one times, as many times as possible, giving back as needed (greedy)
\/ matches the character / with index 4710 (2F16 or 578) literally (case insensitive)
\d matches a digit (equivalent to [0-9])
\d
matches a digit (equivalent to [0-9])
? matches the previous token between zero and one times, as many times as possible, giving back as needed (greedy)
2nd Alternative
(\d\d?L?\-\d\d?L?)
46th Capturing Group
(\d\d?L?\-\d\d?L?)
\d matches a digit (equivalent to [0-9])
\d
matches a digit (equivalent to [0-9])
? matches the previous token between zero and one times, as many times as possible, giving back as needed (greedy)
L
matches the character L with index 7610 (4C16 or 1148) literally (case insensitive)
\- matches the character - with index 4510 (2D16 or 558) literally (case insensitive)
\d matches a digit (equivalent to [0-9])
\d
matches a digit (equivalent to [0-9])
? matches the previous token between zero and one times, as many times as possible, giving back as needed (greedy)
L
matches the character L with index 7610 (4C16 or 1148) literally (case insensitive)
3rd Alternative
L
L matches the character L with index 7610 (4C16 or 1148) literally (case insensitive)
4th Alternative
(\d\d?W)
47th Capturing Group
(\d\d?W)
\d matches a digit (equivalent to [0-9])
\d
matches a digit (equivalent to [0-9])
? matches the previous token between zero and one times, as many times as possible, giving back as needed (greedy)
W matches the character W with index 8710 (5716 or 1278) literally (case insensitive)
48th Capturing Group
(,(((\*|(\d\d?L?))(\/\d\d?)?)|(\d\d?L?\-\d\d?L?)|L|(\d\d?W)))*
* matches the previous token between zero and unlimited times, as many times as possible, giving back as needed (greedy)
A repeated capturing group will only capture the last iteration. Put a capturing group around the repeated group to capture all iterations or use a non-capturing group instead if you're not interested in the data
, matches the character , with index 4410 (2C16 or 548) literally (case insensitive)
49th Capturing Group
(((\*|(\d\d?L?))(\/\d\d?)?)|(\d\d?L?\-\d\d?L?)|L|(\d\d?W))
1st Alternative
((\*|(\d\d?L?))(\/\d\d?)?)
50th Capturing Group
((\*|(\d\d?L?))(\/\d\d?)?)
51st Capturing Group
(\*|(\d\d?L?))
1st Alternative
\*
\* matches the character * with index 4210 (2A16 or 528) literally (case insensitive)
2nd Alternative
(\d\d?L?)
52nd Capturing Group
(\d\d?L?)
\d matches a digit (equivalent to [0-9])
\d
matches a digit (equivalent to [0-9])
? matches the previous token between zero and one times, as many times as possible, giving back as needed (greedy)
L
matches the character L with index 7610 (4C16 or 1148) literally (case insensitive)
53rd Capturing Group
(\/\d\d?)?
? matches the previous token between zero and one times, as many times as possible, giving back as needed (greedy)
\/ matches the character / with index 4710 (2F16 or 578) literally (case insensitive)
\d matches a digit (equivalent to [0-9])
\d
matches a digit (equivalent to [0-9])
? matches the previous token between zero and one times, as many times as possible, giving back as needed (greedy)
2nd Alternative
(\d\d?L?\-\d\d?L?)
54th Capturing Group
(\d\d?L?\-\d\d?L?)
\d matches a digit (equivalent to [0-9])
\d
matches a digit (equivalent to [0-9])
? matches the previous token between zero and one times, as many times as possible, giving back as needed (greedy)
L
matches the character L with index 7610 (4C16 or 1148) literally (case insensitive)
\- matches the character - with index 4510 (2D16 or 558) literally (case insensitive)
\d matches a digit (equivalent to [0-9])
\d
matches a digit (equivalent to [0-9])
L
matches the character L with index 7610 (4C16 or 1148) literally (case insensitive)
3rd Alternative
L
L matches the character L with index 7610 (4C16 or 1148) literally (case insensitive)
4th Alternative
(\d\d?W)
\s matches any whitespace character (equivalent to [\r\n\t\f\v \u00a0\u1680\u2000-\u200a\u2028\u2029\u202f\u205f\u3000\ufeff])
56th Capturing Group
(((\*|(\d|10|11|12|JAN|FEB|MAR|APR|MAY|JUN|JUL|AUG|SEP|OCT|NOV|DEC))(\/\d\d?)?)|((\d|10|11|12|JAN|FEB|MAR|APR|MAY|JUN|JUL|AUG|SEP|OCT|NOV|DEC)\-(\d|10|11|12|JAN|FEB|MAR|APR|MAY|JUN|JUL|AUG|SEP|OCT|NOV|DEC)))
1st Alternative
((\*|(\d|10|11|12|JAN|FEB|MAR|APR|MAY|JUN|JUL|AUG|SEP|OCT|NOV|DEC))(\/\d\d?)?)
57th Capturing Group
((\*|(\d|10|11|12|JAN|FEB|MAR|APR|MAY|JUN|JUL|AUG|SEP|OCT|NOV|DEC))(\/\d\d?)?)
58th Capturing Group
(\*|(\d|10|11|12|JAN|FEB|MAR|APR|MAY|JUN|JUL|AUG|SEP|OCT|NOV|DEC))
1st Alternative
\*
\* matches the character * with index 4210 (2A16 or 528) literally (case insensitive)
2nd Alternative
(\d|10|11|12|JAN|FEB|MAR|APR|MAY|JUN|JUL|AUG|SEP|OCT|NOV|DEC)
59th Capturing Group
(\d|10|11|12|JAN|FEB|MAR|APR|MAY|JUN|JUL|AUG|SEP|OCT|NOV|DEC)
1st Alternative
\d
\d matches a digit (equivalent to [0-9])
2nd Alternative
10
10
matches the characters 10 literally (case insensitive)
3rd Alternative
11
11
matches the characters 11 literally (case insensitive)
4th Alternative
12
5th Alternative
JAN
6th Alternative
FEB
7th Alternative
MAR
8th Alternative
APR
9th Alternative
MAY
10th Alternative
JUN
11th Alternative
JUL
12th Alternative
AUG
13th Alternative
SEP
14th Alternative
OCT
15th Alternative
NOV
16th Alternative
DEC
60th Capturing Group
(\/\d\d?)?
? matches the previous token between zero and one times, as many times as possible, giving back as needed (greedy)
\/ matches the character / with index 4710 (2F16 or 578) literally (case insensitive)
\d matches a digit (equivalent to [0-9])
\d
matches a digit (equivalent to [0-9])
? matches the previous token between zero and one times, as many times as possible, giving back as needed (greedy)
2nd Alternative
((\d|10|11|12|JAN|FEB|MAR|APR|MAY|JUN|JUL|AUG|SEP|OCT|NOV|DEC)\-(\d|10|11|12|JAN|FEB|MAR|APR|MAY|JUN|JUL|AUG|SEP|OCT|NOV|DEC))
61st Capturing Group
((\d|10|11|12|JAN|FEB|MAR|APR|MAY|JUN|JUL|AUG|SEP|OCT|NOV|DEC)\-(\d|10|11|12|JAN|FEB|MAR|APR|MAY|JUN|JUL|AUG|SEP|OCT|NOV|DEC))
62nd Capturing Group
(\d|10|11|12|JAN|FEB|MAR|APR|MAY|JUN|JUL|AUG|SEP|OCT|NOV|DEC)
1st Alternative
\d
\d matches a digit (equivalent to [0-9])
2nd Alternative
10
10
matches the characters 10 literally (case insensitive)
3rd Alternative
11
11
matches the characters 11 literally (case insensitive)
4th Alternative
12
5th Alternative
JAN
6th Alternative
FEB
7th Alternative
MAR
8th Alternative
APR
9th Alternative
MAY
10th Alternative
JUN
11th Alternative
JUL
12th Alternative
AUG
13th Alternative
SEP
14th Alternative
OCT
15th Alternative
NOV
16th Alternative
DEC
\- matches the character - with index 4510 (2D16 or 558) literally (case insensitive)
63rd Capturing Group
(\d|10|11|12|JAN|FEB|MAR|APR|MAY|JUN|JUL|AUG|SEP|OCT|NOV|DEC)
1st Alternative
\d
\d matches a digit (equivalent to [0-9])
2nd Alternative
10
10
matches the characters 10 literally (case insensitive)
3rd Alternative
11
4th Alternative
12
5th Alternative
JAN
6th Alternative
FEB
7th Alternative
MAR
8th Alternative
APR
9th Alternative
MAY
10th Alternative
JUN
11th Alternative
JUL
12th Alternative
AUG
13th Alternative
SEP
14th Alternative
OCT
15th Alternative
NOV
16th Alternative
DEC
64th Capturing Group
(,(((\*|(\d|10|11|12|JAN|FEB|MAR|APR|MAY|JUN|JUL|AUG|SEP|OCT|NOV|DEC))(\/\d\d?)?)|((\d|10|11|12|JAN|FEB|MAR|APR|MAY|JUN|JUL|AUG|SEP|OCT|NOV|DEC)\-(\d|10|11|12|JAN|FEB|MAR|APR|MAY|JUN|JUL|AUG|SEP|OCT|NOV|DEC))))*
* matches the previous token between zero and unlimited times, as many times as possible, giving back as needed (greedy)
A repeated capturing group will only capture the last iteration. Put a capturing group around the repeated group to capture all iterations or use a non-capturing group instead if you're not interested in the data
, matches the character , with index 4410 (2C16 or 548) literally (case insensitive)
65th Capturing Group
(((\*|(\d|10|11|12|JAN|FEB|MAR|APR|MAY|JUN|JUL|AUG|SEP|OCT|NOV|DEC))(\/\d\d?)?)|((\d|10|11|12|JAN|FEB|MAR|APR|MAY|JUN|JUL|AUG|SEP|OCT|NOV|DEC)\-(\d|10|11|12|JAN|FEB|MAR|APR|MAY|JUN|JUL|AUG|SEP|OCT|NOV|DEC)))
1st Alternative
((\*|(\d|10|11|12|JAN|FEB|MAR|APR|MAY|JUN|JUL|AUG|SEP|OCT|NOV|DEC))(\/\d\d?)?)
66th Capturing Group
((\*|(\d|10|11|12|JAN|FEB|MAR|APR|MAY|JUN|JUL|AUG|SEP|OCT|NOV|DEC))(\/\d\d?)?)
67th Capturing Group
(\*|(\d|10|11|12|JAN|FEB|MAR|APR|MAY|JUN|JUL|AUG|SEP|OCT|NOV|DEC))
1st Alternative
\*
\* matches the character * with index 4210 (2A16 or 528) literally (case insensitive)
2nd Alternative
(\d|10|11|12|JAN|FEB|MAR|APR|MAY|JUN|JUL|AUG|SEP|OCT|NOV|DEC)
68th Capturing Group
(\d|10|11|12|JAN|FEB|MAR|APR|MAY|JUN|JUL|AUG|SEP|OCT|NOV|DEC)
1st Alternative
\d
\d matches a digit (equivalent to [0-9])
2nd Alternative
10
10
matches the characters 10 literally (case insensitive)
3rd Alternative
11
4th Alternative
12
5th Alternative
JAN
6th Alternative
FEB
7th Alternative
MAR
8th Alternative
APR
9th Alternative
MAY
10th Alternative
JUN
11th Alternative
JUL
12th Alternative
AUG
13th Alternative
SEP
14th Alternative
OCT
15th Alternative
NOV
16th Alternative
DEC
69th Capturing Group
(\/\d\d?)?
? matches the previous token between zero and one times, as many times as possible, giving back as needed (greedy)
\/ matches the character / with index 4710 (2F16 or 578) literally (case insensitive)
\d matches a digit (equivalent to [0-9])
\d
matches a digit (equivalent to [0-9])
? matches the previous token between zero and one times, as many times as possible, giving back as needed (greedy)
2nd Alternative
((\d|10|11|12|JAN|FEB|MAR|APR|MAY|JUN|JUL|AUG|SEP|OCT|NOV|DEC)\-(\d|10|11|12|JAN|FEB|MAR|APR|MAY|JUN|JUL|AUG|SEP|OCT|NOV|DEC))
70th Capturing Group
((\d|10|11|12|JAN|FEB|MAR|APR|MAY|JUN|JUL|AUG|SEP|OCT|NOV|DEC)\-(\d|10|11|12|JAN|FEB|MAR|APR|MAY|JUN|JUL|AUG|SEP|OCT|NOV|DEC))
71st Capturing Group
(\d|10|11|12|JAN|FEB|MAR|APR|MAY|JUN|JUL|AUG|SEP|OCT|NOV|DEC)
1st Alternative
\d
\d matches a digit (equivalent to [0-9])
2nd Alternative
10
10
matches the characters 10 literally (case insensitive)
3rd Alternative
11
4th Alternative
12
5th Alternative
JAN
6th Alternative
FEB
7th Alternative
MAR
8th Alternative
APR
9th Alternative
MAY
10th Alternative
JUN
11th Alternative
JUL
12th Alternative
AUG
13th Alternative
SEP
14th Alternative
OCT
15th Alternative
NOV
16th Alternative
DEC
\- matches the character - with index 4510 (2D16 or 558) literally (case insensitive)
72nd Capturing Group
(\d|10|11|12|JAN|FEB|MAR|APR|MAY|JUN|JUL|AUG|SEP|OCT|NOV|DEC)
1st Alternative
\d
\d matches a digit (equivalent to [0-9])
2nd Alternative
10
3rd Alternative
11
4th Alternative
12
5th Alternative
JAN
6th Alternative
FEB
7th Alternative
MAR
8th Alternative
APR
9th Alternative
MAY
10th Alternative
JUN
11th Alternative
JUL
12th Alternative
AUG
13th Alternative
SEP
14th Alternative
OCT
15th Alternative
NOV
16th Alternative
DEC
\s matches any whitespace character (equivalent to [\r\n\t\f\v \u00a0\u1680\u2000-\u200a\u2028\u2029\u202f\u205f\u3000\ufeff])
73rd Capturing Group
(((\*|([0-7]|MON|TUE|WED|THU|FRI|SAT|SUN)L?)(\/\d\d?)?)|(([0-7]|MON|TUE|WED|THU|FRI|SAT|SUN)L?\-([0-7]|MON|TUE|WED|THU|FRI|SAT|SUN)L?)|([0-7]|MON|TUE|WED|THU|FRI|SAT|SUN)L?#([1-5]))
1st Alternative
((\*|([0-7]|MON|TUE|WED|THU|FRI|SAT|SUN)L?)(\/\d\d?)?)
74th Capturing Group
((\*|([0-7]|MON|TUE|WED|THU|FRI|SAT|SUN)L?)(\/\d\d?)?)
75th Capturing Group
(\*|([0-7]|MON|TUE|WED|THU|FRI|SAT|SUN)L?)
1st Alternative
\*
\* matches the character * with index 4210 (2A16 or 528) literally (case insensitive)
2nd Alternative
([0-7]|MON|TUE|WED|THU|FRI|SAT|SUN)L?
76th Capturing Group
([0-7]|MON|TUE|WED|THU|FRI|SAT|SUN)
1st Alternative
[0-7]
Match a single character present in the list below
[0-7]
0-7 matches a single character in the range between 0 (index 48) and 7 (index 55) (case insensitive)
2nd Alternative
MON
3rd Alternative
TUE
4th Alternative
WED
5th Alternative
THU
6th Alternative
FRI
7th Alternative
SAT
8th Alternative
SUN
L
matches the character L with index 7610 (4C16 or 1148) literally (case insensitive)
77th Capturing Group
(\/\d\d?)?
? matches the previous token between zero and one times, as many times as possible, giving back as needed (greedy)
\/ matches the character / with index 4710 (2F16 or 578) literally (case insensitive)
\d matches a digit (equivalent to [0-9])
\d
matches a digit (equivalent to [0-9])
? matches the previous token between zero and one times, as many times as possible, giving back as needed (greedy)
2nd Alternative
(([0-7]|MON|TUE|WED|THU|FRI|SAT|SUN)L?\-([0-7]|MON|TUE|WED|THU|FRI|SAT|SUN)L?)
78th Capturing Group
(([0-7]|MON|TUE|WED|THU|FRI|SAT|SUN)L?\-([0-7]|MON|TUE|WED|THU|FRI|SAT|SUN)L?)
79th Capturing Group
([0-7]|MON|TUE|WED|THU|FRI|SAT|SUN)
1st Alternative
[0-7]
Match a single character present in the list below
[0-7]
0-7 matches a single character in the range between 0 (index 48) and 7 (index 55) (case insensitive)
2nd Alternative
MON
3rd Alternative
TUE
4th Alternative
WED
5th Alternative
THU
6th Alternative
FRI
7th Alternative
SAT
8th Alternative
SUN
L
matches the character L with index 7610 (4C16 or 1148) literally (case insensitive)
\- matches the character - with index 4510 (2D16 or 558) literally (case insensitive)
80th Capturing Group
([0-7]|MON|TUE|WED|THU|FRI|SAT|SUN)
L
matches the character L with index 7610 (4C16 or 1148) literally (case insensitive)
3rd Alternative
([0-7]|MON|TUE|WED|THU|FRI|SAT|SUN)L?#([1-5])
83rd Capturing Group
(,(((\*|([0-7]|MON|TUE|WED|THU|FRI|SAT|SUN)L?)(\/\d\d?)?)|(([0-7]|MON|TUE|WED|THU|FRI|SAT|SUN)L?\-([0-7]|MON|TUE|WED|THU|FRI|SAT|SUN)L?)|([0-7]|MON|TUE|WED|THU|FRI|SAT|SUN)L?#([1-5])))*
* matches the previous token between zero and unlimited times, as many times as possible, giving back as needed (greedy)
A repeated capturing group will only capture the last iteration. Put a capturing group around the repeated group to capture all iterations or use a non-capturing group instead if you're not interested in the data
, matches the character , with index 4410 (2C16 or 548) literally (case insensitive)
84th Capturing Group
(((\*|([0-7]|MON|TUE|WED|THU|FRI|SAT|SUN)L?)(\/\d\d?)?)|(([0-7]|MON|TUE|WED|THU|FRI|SAT|SUN)L?\-([0-7]|MON|TUE|WED|THU|FRI|SAT|SUN)L?)|([0-7]|MON|TUE|WED|THU|FRI|SAT|SUN)L?#([1-5]))
1st Alternative
((\*|([0-7]|MON|TUE|WED|THU|FRI|SAT|SUN)L?)(\/\d\d?)?)
85th Capturing Group
((\*|([0-7]|MON|TUE|WED|THU|FRI|SAT|SUN)L?)(\/\d\d?)?)
86th Capturing Group
(\*|([0-7]|MON|TUE|WED|THU|FRI|SAT|SUN)L?)
1st Alternative
\*
\* matches the character * with index 4210 (2A16 or 528) literally (case insensitive)
2nd Alternative
([0-7]|MON|TUE|WED|THU|FRI|SAT|SUN)L?
88th Capturing Group
(\/\d\d?)?
2nd Alternative
(([0-7]|MON|TUE|WED|THU|FRI|SAT|SUN)L?\-([0-7]|MON|TUE|WED|THU|FRI|SAT|SUN)L?)
3rd Alternative
([0-7]|MON|TUE|WED|THU|FRI|SAT|SUN)L?#([1-5])
$ asserts position at the end of a line
Global pattern flags
g modifier: global. All matches (don't return after first match)
m modifier: multi line. Causes ^ and $ to match the begin/end of each line (not only begin/end of string)
i modifier: insensitive. Case insensitive match (ignores case of [a-zA-Z])
Your regular expression does not match the subject string.

Regular Expression
No Match

/
/
gmi

Test String