PHP正则表达式允许这种模式中的破折号

rin*_*hik 0 php regex

我有一个图像文件名验证的正则表达式:

/^\w*\.(jpg|jpeg|png|gif)$/

但问题是文件名可以包含短划线-字符.例如:564SDD-DSS.png

我如何在此声明中包含破折号?我需要逃脱它吗?

/^\w\-*\.(jpg|jpeg|png|gif)$/

要么

/^[\w\-]*\.(jpg|jpeg|png|gif)$/

我有点失落.

Exp*_*lls 5

就是[\w-]这样.而不是*你可能想要的,+因为我确定基本名称至少有一个字符长.全部一起:

/^[\w-]+\.(jpe?g|png|gif)$/i
Run Code Online (Sandbox Code Playgroud)

请注意,这确实允许文件名 -.jpg