PHP Regex用于文件名

TMN*_*ear 2 php regex filenames preg-replace preg-match

我让用户可以通过textarea更改文件名,但现在我有一个正则表达式问题.

正如我在Windows 7中看到的那样,这些字符仅允许用于文件名:

\ / : * ? < > |

但我固执地,或许也明智地选择将正则表达式最小化到这些特殊字符:

- _ .

所有其他人都应该被削减.

这个正则表达式有人可以帮助我吗?

preg_replace除了: A-Za-z0-9- _ .

我仍然真的没有掌握它.

Pau*_*l S 12

preg_replace('/[^A-Za-z0-9 _ .-]/', '', $filename);
Run Code Online (Sandbox Code Playgroud)

[]是一个字符类,^否定它.因此,除了该组中的字符之外,它实际上匹配任何其他内容.

请注意,最后-是因为如果在别处使用它是一个特殊的范围字符,例如0-9