所有字符串的正则表达式不包含特定字符串

时间:2016-01-01 19:45:42

标签: php regex

我需要在我的示例中选择原始图像是' image1.jpg'任何扩展名。

image1-150x150.jpg
image1-225x300.jpg
image1-768x1024.jpg
image1.jpg

我尝试过以下方法:

preg_grep("/-([0-9]+x[0-9])+/", $image);

如何排除其他文件并选择" image1.jpg"?

1 个答案:

答案 0 :(得分:2)

  

我想在没有PREG_GREP_INVERT的情况下撰写,因为在某些情况下会使用preg_grep

然后您可以使用否定前瞻来否定包含模式\d+x\d+的字符串:

/^((?:.(?!\d+x\d+))*\.[^.]+)$/gm

它会根据您提供的输入[{3}}捕获image1.jpg

  • ^ - 锚点以匹配行的开头(因为使用了m标志)。

  • .(?!\d+x\d+))* - 匹配零个或多个字符后面没有\d+x\d+

  • \.[^.]+ - 匹配.字符后跟一个或多个不是.的字符

  • $ - 与该行的结尾匹配的锚点。