我怎样才能确保一个正则表达式中的一个匹配,一个不匹配?

Car*_*ers 1 php regex

这很简单,但我正在整个目录列表(在PHP中dir()),并确保它们:

  • 不是"." 或"......",和
  • 以文件扩展名.jpg,.jpeg,.gif或.png结尾.

现在我有

function isValidFile($filename) {
    $dirDotExpr = "/^\.{1,2}$/"; //matches against "." and ".."
    $extExpr = "/\.(jpg|jpeg|gif|png)$/i"; //checks file extension

    return (1
        && ! preg_match($dirDotExpr, $filename)
        && preg_match($extExpr, $filename)
    )
}
Run Code Online (Sandbox Code Playgroud)

但是在一个正则表达式中完成所有操作会很好.但是,我不知道如何确保一件事情匹配,有一件事没有 - 我怎么能做到这一点?

Joh*_*ica 6

你可能会过度思考它.如果您$filename以.jpg,.jpeg,.gif或.png 验证结尾,则显然不能是"." 要么 "..".