Laravel 5.4 - 使用Regex进行验证

时间:2017-03-03 10:57:36

标签: php laravel laravel-5 laravel-5.4

以下是项目名称的规则:

$this->validate(request(), [
    'projectName' => 'required|regex:/(^([a-zA-z]+)(\d+)?$)/u',
];

我正在尝试添加规则,使其必须以a-zA-z中的字母开头,并且可以以数字结尾,但绝大多数都没有。

项目名称的有效值:

myproject123
myproject
MyProject

项目名称的值无效:

123myproject
!myproject
myproject 123
my project
my project123

我在网上尝试了我的正则表达式:

enter image description here

https://regex101.com/r/FylFY1/2

它应该可以工作,但即使使用project 123,我也可以通过验证。

UPDATE :它确实有效,我只是在错误的控制器中测试过,对不起......但也许它会帮助其他人

1 个答案:

答案 0 :(得分:48)

您的规则已经完成您需要知道,指定验证规则,其中正则表达式由管道分隔可能导致导致意外行为。

定义验证规则的正确方法应该是:

$this->validate(request(), [
    'projectName' => 
        array(
            'required',
            'regex:/(^([a-zA-Z]+)(\d+)?$)/u'
        )
];

您可以阅读official docs

  

正则表达式:图案

     

验证字段必须与给定的正则表达式匹配。

     

注意:使用regex / not_regex模式时,可能需要来指定数组中的规则而不是使用管道分隔符,尤其是当正则表达式包含管道符时。