Php 正则表达式:Laravel中的模式验证

Php 正则表达式:Laravel中的模式验证,php,regex,laravel,validation,Php,Regex,Laravel,Validation,我尝试在Laravel中验证facebook.com url。 这是我的正则表达式: 'facebook' => 'url|regex:((?:(?:http|https):\/\/)?(?:www.)?facebook.com\/(?:(?:\w)*#!\/)?(?:pages\/)?(?:[?\w\-]*\/)?(?:profile.php\?id=(?=\d.*))?([\w\-]*))|nullable', 它在在线regex测试网站()中工作,但在Laravel中工作。

我尝试在Laravel中验证facebook.com url。 这是我的正则表达式:

    'facebook' => 'url|regex:((?:(?:http|https):\/\/)?(?:www.)?facebook.com\/(?:(?:\w)*#!\/)?(?:pages\/)?(?:[?\w\-]*\/)?(?:profile.php\?id=(?=\d.*))?([\w\-]*))|nullable',
它在在线regex测试网站()中工作,但在
Laravel
中工作。我有错误

“preg_match():未找到结尾匹配分隔符“')”


问题出在哪里?

参见官方文件中的注释:

使用正则表达式/非正则表达式模式时,可能需要 在数组中指定规则,而不是使用管道分隔符,尤其是 如果正则表达式包含管道字符

因此,这应该是可行的:

'facebook' => ['url', 'regex:/(?:(?:http|https):\/\/)?(?:www.)?facebook.com\/(?(?:\w)*#!\/)?(?:pages\/)?(?:[?\w\-]*\/)?(?:profile.php\?id=(?=\d.*))?([\w\-]*))/', 'nullable']

似乎。您应该编写它
regex:/…/
我尝试了一下,结果是:“preg\u match():没有结尾分隔符“/”找到“'facebook'=>”url;regex:/(?:(?:(?:(?:http | https):\/\/)(?:www.)?facebook.com\/(?:(?::\w)*\35;!\/)(?:pages\/)(?:[?:[\w\-]*\/)(?:profile.php\=(?:id=(?=?=?=?=\d.*)\w*))编译失败后,pregu?(或者(?C)在偏移量51“处,您的图案中似乎有一个额外的
),您现在可以试一试吗?