【正则】为什么这写也有效呢?

php441914320 2012-12-10 12:28:06
匹配压缩包文件名(x.rar x.rar x.7z):

我是这么写的:
'/^\w+\.rar$|^\w+\.zip$|^\w+\.7z$/i'

但是后来发现这么写也可以:
'/^\w+\.rar|zip|7z$/i'


关于“|”这个符号的理解还是不到位啊,求指教。

关于第二个正则表达式,按我的理解应该这样执行:
比如我有已经压缩包名为“test.rar”
第一个匹配:“test.rar”匹配是失败的。
第二次匹配:应该匹配“zip”但为什么匹配了“^\w+\.zip$”?

...全文
120 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
php441914320 2012-12-10
  • 打赏
  • 举报
回复
引用 1 楼 mu_rain 的回复:
推荐一个函数, pathinfo();
/^\w+\.(rar|zip|7z)$/i
这么写就没问题了,o(∩_∩)o 哈哈。
php441914320 2012-12-10
  • 打赏
  • 举报
回复
引用 1 楼 mu_rain 的回复:
推荐一个函数, pathinfo();
我明白了,确实第二个匹配 x.zip 能匹配到是因为 x.zip 里面也包含 zip 但是不检测前面的文件名和点了。 妈的,视频教程犯二,我也一起跟着犯二,我还以为好神奇呢。
mu_rain 2012-12-10
  • 打赏
  • 举报
回复
推荐一个函数, pathinfo();
php441914320 2012-12-10
  • 打赏
  • 举报
回复
引用 5 楼 mu_rain 的回复:
最好读一下文件的头信息,服务器端验一下文件的真实性~ 引用 3 楼 php441914320 的回复:引用 1 楼 mu_rain 的回复:推荐一个函数, pathinfo(); PHP code?1/^\w+\.(rar|zip|7z)$/i 这么写就没问题了,o(∩_∩)o 哈哈。
谢谢!
mu_rain 2012-12-10
  • 打赏
  • 举报
回复
最好读一下文件的头信息,服务器端验一下文件的真实性~
引用 3 楼 php441914320 的回复:
引用 1 楼 mu_rain 的回复:推荐一个函数, pathinfo(); PHP code?1/^\w+\.(rar|zip|7z)$/i 这么写就没问题了,o(∩_∩)o 哈哈。
xuzuning 2012-12-10
  • 打赏
  • 举报
回复
能省则省,只要不产生歧义

21,887

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧