不允许特殊表达式 - PHP 中的正则表达式

Special Expression not allowed - Regular Expression in PHP

我正在尝试匹配我的字符串以不允许大小写:例如来自下面图像名称的 150x150

test-string-150x150.png

我正在使用以下模式来匹配此字符串:

/^([^0-9x0-9]+)\..+/

它工作正常,除了在这种情况下:

teststring.com-150x150.jpg

我需要得到什么 - 掩码必须只允许字符串末尾的尺寸,这里是一些例子:

test-string-150x150.png > must disallow

any-string.png > allow

200x200-test.png > allow

1x1.png-100x100.jpg > disallow

如果我理解您的问题,您是在尝试查找 包含图像尺寸的图像名称。如果是这样,试试这个:

/^(?![\w-\.]+(\d+x\d+))[\w-\.]+\.\w+$/gm

有关此代码的详细信息,请参阅regexr.com/4tmd1。这个网站是玩正则表达式的好地方,以确保您获得预期的结果。

请注意,正则表达式的确切语法取决于您使用的任何程序所使用的正则表达式引擎 运行。

您可以使用否定先行断言字符串不包含后跟一个点和 1+ 个单词字符直到字符串末尾的大小。

^(?!.*\d+x\d+\.\w+$).+$

说明

  • ^ 字符串开头
  • (?! 否定前瞻,断言右边的不是
    • .* 匹配出现 0 次以上的任何字符,换行符除外
    • \d+x\d+匹配sizes格式,其中\d+表示1个或多个数字
    • \.\w+$ 匹配一个点,1+个单词字符并断言字符串结束 $
  • ) 关闭前瞻
  • .+ 匹配出现 1 次以上的任何字符,换行符除外
  • $ 字符串结束

Regex demo