\ba Unicode word boundary
Non-Capturing Group(?:((?:0?[1-9]|[12]\d|3[01])(?:\s*(?:st|[rn]d|th))?)\s*)? ?repeats the group contents below at most once:
Group 1((?:0?[1-9]|[12]\d|3[01])(?:\s*(?:st|[rn]d|th))?) Non-Capturing Group(?:0?[1-9]|[12]\d|3[01]) 0?optionally matches the literal 0 (4810 / 608 / 3016)
1-9one character from 1 (4910) to 9 (5710)
1the literal 1 (4910 / 618 / 3116)
2the literal 2 (5010 / 628 / 3216)
\da Unicode decimal digit
3the literal 3 (5110 / 638 / 3316)
0the literal 0 (4810 / 608 / 3016)
1the literal 1 (4910 / 618 / 3116)
Non-Capturing Group(?:\s*(?:st|[rn]d|th))? ?repeats the group contents below at most once:
\s*a Unicode whitespace character, repeated any number of times
Non-Capturing Group(?:st|[rn]d|th) stthe literal text st (case insensitive) rthe literal r (11410 / 1628 / 7216) (case insensitive)
nthe literal n (11010 / 1568 / 6E16) (case insensitive)
dthe literal d (10010 / 1448 / 6416) (case insensitive)
ththe literal text th (case insensitive) \s*a Unicode whitespace character, repeated any number of times
Group 2(Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|June?|July?|Aug(?:ust)?|Sep(?:t(?:ember)?)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?) 1st AlternativeJan(?:uary)? Janthe literal text Jan (case insensitive) Non-Capturing Group(?:uary)? ?repeats the group contents below at most once:
uarythe literal text uary (case insensitive) 2nd AlternativeFeb(?:ruary)? Febthe literal text Feb (case insensitive) Non-Capturing Group(?:ruary)? ?repeats the group contents below at most once:
ruarythe literal text ruary (case insensitive) 3rd AlternativeMar(?:ch)? Marthe literal text Mar (case insensitive) Non-Capturing Group(?:ch)? ?repeats the group contents below at most once:
chthe literal text ch (case insensitive) 4th AlternativeApr(?:il)? Aprthe literal text Apr (case insensitive) Non-Capturing Group(?:il)? ?repeats the group contents below at most once:
ilthe literal text il (case insensitive) Maythe literal text May (case insensitive) 8th AlternativeAug(?:ust)? 9th AlternativeSep(?:t(?:ember)?)? 10th AlternativeOct(?:ober)? 11th AlternativeNov(?:ember)? 12th AlternativeDec(?:ember)? \s*a Unicode whitespace character, repeated any number of times
\s*a Unicode whitespace character, repeated any number of times
\s*a Unicode whitespace character, repeated any number of times
Non-Capturing Group(?:((?:0?[1-9]|[12]\d|3[01])(?:\s*(?:st|[rn]d|th))?)\s*)? Group 5(Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|June?|July?|Aug(?:ust)?|Sep(?:t(?:ember)?)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?) \s*a Unicode whitespace character, repeated any number of times
g modifier: global. Finds all matches instead of stopping after the first
m modifier: multiline. Causes ^ and $ to match the start and end of each line, not only the start and end of the string
i modifier: insensitive. Matches without distinguishing uppercase and lowercase letters