Laravel Regex Match Url与JPG无法正常工作

时间:2014-08-24 16:32:02

标签: php regex validation laravel match

我在http://www.regexr.com/匹配laravel的正则表达式验证所需的正则表达式。 使用jpg / gif / png文件验证url结尾。

/(http|https):\/\/(www\.)?[\w-_\.]+\.[a-zA-Z]+\/((([\w-_\/]+)\/)?[\w-_\.]+\.(png$|gif$|jpe?g$))/ig 'regex' 但是当我输入我的代码时,它会给我一个preg_match(): No ending delimiter '/' found错误。

这是我的验证规则

$rules  = [
            'title'             => 'required|min:3',
            'description'       => 'required|min:3',
            'url'               => 'required|regex:/(http|https):\/\/(www\.)?[\w-_\.]+\.[a-zA-Z]+\/((([\w-_\/]+)\/)?[\w-_\.]+\.(png$|gif$|jpe?g$))/ig',
          ];

1 个答案:

答案 0 :(得分:2)

如前所述here,Laravel |分隔符与正则表达式替换|冲突。

中考虑的正则表达式
required|regex:/(http|https)...

/(http,因此错过了结束分隔符。

似乎你可以通过使用来解决问题(我冒昧地清理你的正则表达式中的一些东西):

'url' => array('required', 'regex:/(https?):\/\/(www\.)?[\w.-]+\.[a-zA-Z]+\/((([\w\/-]+)\/)?[\w.-]+\.(png|gif|jpe?g)$)/ig')

如果Laravel使用与/不同的分隔符,我也建议使用其他东西(例如~)来减轻\/的森林。