【问题标题】:How to validate zero or more image names, allowing spaces, separated by commas or empty如何验证零个或多个图像名称,允许空格,用逗号或空分隔
【发布时间】:2017-06-01 22:57:00
【问题描述】:

我需要用正则表达式验证图片,条件如下:

  1. $string 可能为空
  2. 我可以接收此格式的单个图像,例如:2017-06-01-03-55-00-5930782c5c0b1.jpg
  3. 我可以得到几个用逗号分隔的图像名称,例如:2017-06-01-03-55-00-5930782c5c0b1.jpg, 2017-06-01-03-55-00-5930782c5c0b1.jpg
  4. 避免使用除这些以外的其他特殊字符:A-Za-z0-9\-

我已经通过我在正则表达式方面的知识设法做到了这一点,但是我必须验证 estring 是否为空,是否有多个用逗号分隔的图像,以及是否除了字符串之外没有其他字符。

$pattern = '/[a-zA-Z0-9]\.(jpg|jpeg|png|gif)$/';
$string = '2017-06-01-03-55-00-5930782c5c0b1.jpg';

if( preg_match($pattern, $string) ) {
    echo "TRUE";
} else {
    echo "FALSE";
}

非常感谢您的帮助。

【问题讨论】:

  • 检查empty() 然后检查explode() 逗号,然后检查数组循环中的正则表达式

标签: php regex image preg-match filenames


【解决方案1】:

这将完成所有这些事情:

/^(?:[\dA-Za-z-]+\.(?:jpe?g|png|gif))?(?:, (?:[\dA-Za-z-]+\.(?:jpe?g|png|gif)))*$/

它将匹配以下的第 2、3 和第 5 行:

bad_image.jpg

2017-06-01-03-55-00-5930782c5c0b1.jpg
2017-06-01-03-55-00-5930782c5c0b1.jpeg, bad_image.jpg
2017-06-01-03-55-00-5930782c5c0b1.png, 2017-06-01-03-55-00-5930782c5c0b1.gif

这里是Demo。我的模式将匹配零个或多个必须用comma-space分隔的有效图像文件名

【讨论】:

  • 您好@mickmackusa,非常感谢您的回答,我已经在 PHP 中测试了示例代码,它适用于空白空间,但不适用于图像的功能名称,请看这里:eval.in/809859
  • 这很完美,非常感谢@mickmackusa。
  • 这在 PHP 中完美运行,但我只是将它添加到 Codeigniter 框架中,它向我显示以下消息:消息:preg_match():未找到结束分隔符 '/',参考文档:@ 987654323@
  • @Learningandsharing 你可以换回小写字符然后.../^(?:[\dA-Za-z-]+\.(?:jpe?g|png|gif))?(?:, (?:[\dA-Za-z-]+\.(?:jpe?g|png|gif)))*$/
  • 您的示例在 PHP 中运行良好,但在 Codeigniter 中显示以下消息:消息:preg_match(): No end delimiter '/' found
【解决方案2】:

我认为您可能正在寻找以下内容,因为您的正则表达式模式没有考虑破折号。

/[a-z0-9-]+\.(jpg|jpeg|png|gif)/gi

可以在Regexr.com找到完善正则表达式的重要资源

表达式末尾的 /g 使模式全局化,查看传递给它的整个字符串,而不是找到第一个匹配项并停止。

表达式末尾的 /i 表示不区分大小写,因此您不必同时包含 a-z 和 A-Z。

【讨论】:

  • 您好 Eddy,我需要知道字符串是否为空、是否有逗号或多个文件名。
  • 啊……抱歉,我错过了那部分。自从我使用 PHP 以来已经太久了,所以我无法帮助你解决这部分问题。
  • 其实.. 看看这个。在 StackOverflow 上找到它。 stackoverflow.com/questions/15007777/…
  • 嗨 Eddy Jones,@mickmackusa 的反应很好,让我们看看她。
猜你喜欢
  • 1970-01-01
  • 2016-11-26
  • 2017-11-24
  • 2012-11-23
  • 1970-01-01
  • 2015-09-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多