以下是我目前用于清理带有特殊字符的文件名的内容。基本上,它应该取代以下所有内容:
期间。
echo preg_replace("/[^a-zA-Z0-9\_\-\.\s]/", "", "A\'s`kljdsg\\\`sk//dgj@@@//\/\/\#``flkl_dfd-_-sfsfs-fk kgj.docx");
虽然它似乎有用,但我不确定_-。是在正则表达式中使用它的正确方法。
答案 0 :(得分:2)
Get-Childitem 'c:\Compile\' -Recurse | ForEach-Object {
Remove-Item $_.FullName -Force
}
表示范围,例如-
。所以,如果你想把它放在中间位置,你应该把它保留在最后,最后或者将其保留。
另外0-9
最后,您可以使用此正则表达式
\w => [A-Za-z0-9_]
<强> Regex Demo 强>
PHP代码
[^\w.-]
<强> Ideone Demo 强>
如果您还想包含空格,请使用
$re = "/[^\\w.-]/";
$str = "A\'skljdsg\\\sk//dgj@@@////#``flkl_dfd-_-sfsfs-fk kgj.docx";
$result = preg_replace($re, "", $str);
答案 1 :(得分:1)
如果你在中间使用hypen -
你必须用斜杠来逃避它:
preg_replace("/[^a-zA-Z0-9_\-.\s]/", "", "A\'skljdsg\\\sk//dgj@@@////#``flkl_dfd-_-sfsfs-fk kgj.docx");
或将其放在最后:
"/[^a-zA-Z0-9_.\s-]/"