in reply to Regular expression to check for invalid file name characters

Why not just let the OS tell you if it's invalid? There's a bug that \0 will be treated as the end of string, so that's the only one you actually have to check for.

Now, if you're doing this for security reasons, a much better approach is to check for the characters you want to allow (as opposed to those you want to disallow). That way, you don't actually miss any.

Replies are listed 'Best First'.
Re^2: Regular expression to check for invalid file name characters
by BrowserUk (Patriarch) on Feb 22, 2010 at 16:16 UTC
    Why not just let the OS tell you if it's invalid?

    How would you do that reliably?

    If you tried creating a file, it might fail because it already existed. If it succeeds, then you'd have to delete it again--assuming the idea is to just check, not actually use. And if it contained a backslash, you might end up creating a file in a subdirectory. You can't stat unless it already exists.

    So what call would you use?


    Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
    "Science is about questioning the status quo. Questioning authority".
    In the absence of evidence, opinion is indistinguishable from prejudice.

      If it succeeds, then you'd have to delete it again--assuming the idea is to just check, not actually use.

      I assumed the opposite. When we get questions like this, the check is followed by actually opening or creating the file.

      How would you do that reliably?

      Errno provides codes against which you can check $!.

        I assumed the opposite.

        Even so, you could still succeed in creating a file within a subdirectory by accident.


        Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
        "Science is about questioning the status quo. Questioning authority".
        In the absence of evidence, opinion is indistinguishable from prejudice.