Why not use facets like the Text Filter which also supports RegEx.
And then do the extraction of dates in various formats in 2 or 3+ passes?
Why does the extraction have to be in a single operation step in OpenRefine?
Where will the extracted dates go? Into a new column?
Filter on dates (4 digit numbers) in a cells' value using value.find(/\d{4}/)
extract them into a column called DATE with value.find(/\d{4}/).join("|") because find() outputs an array of elements, so joining them with a pipe separator, just in case you have multiple 4 digit dates in a string?
Filter on dates having th century using value.contains("th century") ?
extract or find them into the same column called DATE using value.find(/(\d{2})th century/).join("|")
Filter on other date patterns discovered using Facets, maybe Roman Numerals?
extract them into the same column called DATE or a new column WEIRD-DATES