2013-04-08 60 views
0

破折号我有一个图像文件名验证正则表达式:PHP正则表达式允许这种模式

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

但问题是,文件名可以包含破折号-字符。例如:564SDD-DSS.png

我如何在此声明中加入破折号?我需要逃避它吗?

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

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

我有点失落。

+1

* offtopic *尊重我authoritah! – Quasdunk 2013-04-08 17:56:22

+0

如果你真的尝试*运行*这些表达式,你会发现最后一个完全符合你的要求,并保存自己到SO的旅程。 – Sammitch 2013-04-08 17:57:55

回答

5

只要[\w-]会做。而不是*你可能想要+,因为我确定基本名至少有一个字符长。总之:

/^[\w-]+\.(jpe?g|png|gif)$/i 

注意,这确实允许一个文件名,这只是-.jpg

+1

您可能想要添加'i'修饰符。这里你还可以在文件扩展名中包含大写字母 – 2013-04-08 17:57:30

+0

@Le_Morri好点 – 2013-04-08 18:00:25

+0

谢谢!你能告诉我'''在这里做了什么:'jpe?g',它检查一个字符'?' – rinchik 2013-04-08 18:01:17