我需要使用正则表达式验证图像,条件如下:
$string
可能为空2017-06-01-03-55-00-5930782c5c0b1.jpg
2017-06-01-03-55-00-5930782c5c0b1.jpg, 2017-06-01-03-55-00-5930782c5c0b1.jpg
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";
}
非常感谢你的帮助。
答案 0 :(得分: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
答案 1 :(得分:0)
我认为您可能正在寻找以下内容,因为您的正则表达式并不能解释破折号。
cat /tmp/credentials | ./program
可以在Regexr.com
找到完善正则表达式的绝佳资源表达式末尾的/ g使模式成为全局模式,查看传递给它的整个字符串,而不是找到第一个匹配并停止。
表达式末尾的/ i表示不区分大小写,因此您不必同时包含a-z和A-Z。