问题
Below is my rule for project name:
$this->validate(request(), [
'projectName' => 'required|regex:/(^([a-zA-z]+)(\d+)?$)/u',
];
I am trying to add the rule such that it must start with a letter from a-z
or A-z
and can end with numbers but most not.
Valid values for project name:
myproject123
myproject
MyProject
Invalid values for project name:
123myproject
!myproject
myproject 123
my project
my project123
I tried my regex online:
https://regex101.com/r/FylFY1/2
It should work, but I can pass the validation even with project 123
.
UPDATE: It actually works, I just tested it in the wrong controller, im sorry... but maybe it will help others nevertheless
回答1:
Your rule is well done BUT you need to know, specify validation rules with regex separated by pipeline can lead to undesired behavior.
The proper way to define a validation rule should be:
$this->validate(request(), [
'projectName' =>
array(
'required',
'regex:/(^([a-zA-Z]+)(\d+)?$)/u'
)
];
You can read on the official docs:
regex:pattern
The field under validation must match the given regular expression.
Note: When using the regex / not_regex patterns, it may be necessary to specify rules in an array instead of using pipe delimiters, especially if the regular expression contains a pipe character.
来源:https://stackoverflow.com/questions/42577045/laravel-5-4-validation-with-regex