2013-04-08 57 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