替换字符串中除字母数字,连字符,句点和下划线以外的所有内容

时间:2016-05-28 07:07:55

标签: php regex preg-replace

以下是我目前用于清理带有特殊字符的文件名的内容。基本上,它应该取代以下所有内容:

  • 字母数字a-zA-Z0-9
  • 下划线_
  • Hyphens -
  • 期间。

    echo preg_replace("/[^a-zA-Z0-9\_\-\.\s]/", "", "A\'s`kljdsg\\\`sk//dgj@@@//\/\/\#``flkl_dfd-_-sfsfs-fk kgj.docx");
    

虽然它似乎有用,但我不确定_-。是在正则表达式中使用它的正确方法。

2 个答案:

答案 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-]/"