如何验证零个或多个图像名称,允许空格,以逗号分隔或为空
How to validate zero or more image names, allowing spaces, separated by commas or empty
我需要用正则表达式验证图片,条件如下:
$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\-
我已经利用我在正则表达式方面的知识做到了这一点,但我必须验证,如果字符串为空,是否有多个图像以逗号分隔,以及除了字符串之外是否没有其他字符。
$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";
}
非常感谢您的帮助。
我认为您可能正在寻找以下内容,因为您的正则表达式模式没有考虑破折号。
/[a-z0-9-]+\.(jpg|jpeg|png|gif)/gi
可以在 Regexr.com
找到完善正则表达式的重要资源
表达式末尾的 /g 使模式成为全局模式,查看传递给它的整个字符串而不是找到第一个匹配项并停止。
表达式末尾的 /i 表示不区分大小写,因此您不必同时包含 a-z 和 A-Z。
这将完成所有这些事情:
/^(?:[\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
分隔
我需要用正则表达式验证图片,条件如下:
$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\-
我已经利用我在正则表达式方面的知识做到了这一点,但我必须验证,如果字符串为空,是否有多个图像以逗号分隔,以及除了字符串之外是否没有其他字符。
$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";
}
非常感谢您的帮助。
我认为您可能正在寻找以下内容,因为您的正则表达式模式没有考虑破折号。
/[a-z0-9-]+\.(jpg|jpeg|png|gif)/gi
可以在 Regexr.com
找到完善正则表达式的重要资源表达式末尾的 /g 使模式成为全局模式,查看传递给它的整个字符串而不是找到第一个匹配项并停止。
表达式末尾的 /i 表示不区分大小写,因此您不必同时包含 a-z 和 A-Z。
这将完成所有这些事情:
/^(?:[\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