Yes
you should be using a DocumentFilter, not a DocumentListener. A DocumentListener fires the event AFTER the document has been updated so its too late to reject the typed text.
However, you should forget about your table cell renderer and first learn how to write the DocumentFilter for a plain text field. So start by creating a JFrame with a text field and add your DocumentFilter to the text field. Keep the code simple when learning a new concept.
I don't use regex, so I don't know if your regex is correct or not, however the problem I see with the filter is that you are only validating the newly entered text, not the text already in the Document. So what you need to do is create a text
string ASSUMING the text has been inserted into the Document and then validate that string. So the code might be something like:
I don't know why you create a Validate() class instead of just using a validate() method in the filter class.
Finally, there is no need to create a custom editor, just use the DefaultCellEditor: