Test filename with regular expression

Viewed 126139

I am trying to test a filename string with this pattern:

^[A-Za-z0-9-_,\s]+[.]{1}[A-Za-z]{3}$

I want to ensure there is a three letter extension and allow letters, numbers and these symbols: - _ , \s to precede it but I don't want to have to include all of the letters and characters in the filename. I could just use a * instead of a + but that would match 0 or more which wouldn't be a valid filename.

Here are some examples of how the rule should react:

Correct file name.pdf - true
Correct, file name.pdf - true
Correct_file_name.pdf - true
Correctfilename.pdf - true
Incorrect &% file name.pdf - false
Incorrect file name- false

It would be great if someone could point me in the right direction.

Thanks

2 Answers

This question was asked specifically to allow a three letter extension.

For anyone coming from DuckDuckGo like me (yes, you shouldn't use Google :p), this regex tests for valid filenames and file paths on Windows, Unix and macOS:

^[^<>:;,?"*|/]+$

Note: On Windows, \is not allowed in filenames, but the above regex works for checking valid paths on Windows. Include \\ between the brackets ^[...]+$ if you want it to check for valid filenames and not checking paths.

Related