I looking into validating some file names. But cant figure out correct regex
file names can be anything, but need to check if filename ends with
- _ underscore
- en or ru or cy (country code 2 letters)
- . (dot)
- extensions (jpeg, jpg, mp4, png, gif)
my_file_dummy_name.jpeg - not valid my_file_dummy_name_en.jpeg - valid
For Now I tried this (and is working but maybe there is better solution)
The problem with your original regex is that, while it would match the filenames you want to allow, it would also match things you don’t want.
For example, the following regex
would match the file
my_file_dummy_name_de.mpeg, which is a video file from Germany. Clearly, we wouldn’t want to watch this in the first place.
Try this regex:
If you want the regex to do all the checking for you, there’s a more strict way to go about this:
This way you ensure all those constraints you mentioned. Also, there’s no need for the
global flag, as we’re only interested in the end of the string (this is why I put the EOL anchor
$). You could add, though, the
ignore case flag if there’s a possibility of mixed case in the filenames.