用于检查url是否有文件路径的regex(用于laravel 5验证)


regex for check if url have path to file (to use it in laravel 5 validation)

如何确定url是否以该格式创建?

1. http(s)://XXX.XX --> OK
2. http(s)://XXX.XX/ --> OK
3. http(s)://XXX.XX/test --> OK
4. http(s)://XXX.XX/test/ --> OK
5. http(s)://XXX.XX/sdf.sdfsf --> Fail
6. http(s)://XXX.XX/sdf.sdfsf/  --> Ok
7. http(s)://XXX.XX/test/sdf.sdfsf --> Fail
8. http(s)://XXX.XX/test.test/test/sdf.sdfsf  --> Fail

现在我已经发现regex:

(?:[^'/]*+)$(?<='..)

但有两个问题:

  • 我认为只有当路径中有一个文件时,这个验证(对于laravel验证)才有效,但我需要完全相反的方法
  • 如果扩展名为file.x而不是file.x{x+},则仅查找文件

有什么建议可以更正正则表达式吗?

更新:

这里是单元测试(https://regex101.com/r/bV1nS3/1)带有:

(?:.*'/)(?:[^.]+$)

这个对我有用:

(?:.*'/)(?:[^.]+$)

你可以在这里找到你的例子。

这对我有效

.*'/+(?:(?:XXX'.XX'/*)|[^'.]+)?$

在这里,我取了最后一个"/"之后的文本,并检查它是否有点。若它有点,那个么它必须是文件名else目录。此外,如果您更改正则表达式,则必须在其中提及XXX.XX。