我想做一个雷吉士的价格或空。我有实际工作的价格部分(荷兰语用逗号代替点)
/^\d+(,\d{1,2})?$/
上面的regex在值21,99上验证OK。
现在我尝试添加空部分,这样字段可以…只是空^ ^ $
/(^$|^\d+(,\d{1,2})?$)/
但拉拉维尔开始抱怨,一旦我改变了正则表达式:"方法[验证^d+(,d 1,2)?"$)/]不存在。"
工作OK:
$rules = [
'price' => 'regex:/^\d+(,\d{1,2})?$/'
];
拉拉维尔说不……
$rules = [
'price' => 'regex:/(^$|^\d+(,\d{1,2})?$)/'
];
KenKen9990回答-Laravel不再中断,但空值仍然错误:
$rules = [
'price' => 'regex:/^(\d+(,\d{1,2})?)?$/'
];
您能添加一个有效的和无效的模式吗?Regex需要从中进行验证。
在PHP中,您能像lambda函数那样使用regex吗?我觉得你做不到。
@EmSimpson92我不是程序员,lambda?
抱歉,我指的是匿名活动。=>就是C语法。看起来它在PHP中有不同的含义。你的问题出在=>上。
@EMSimpson92在PHP中,您可以创建这样的数组。示例1有效,示例2失败。我认为这只是regex,或者laravel…,哦,现在我知道你对lamba的意思了,传递一个值给一个函数或者其他什么?
是的,但您要为键price和值your regex分配一个keyValuePair。regex不是您的值,只是您想要运行该值的模式
这是工作吗?
$rules = [
'price' => 'nullable|regex:/^(\d+(,\d{1,2})?)?$/'
];
你是我的英雄,我在雷杰克斯54公里
真糟糕,它不会再坏了,但它还是说空值不好,但它应该
@加上'nullable'。
提交空输入将更改为空,表示设置为空,空部分不需要regex。
@ WiktorStribi?这应该是一个答案,而不仅仅是一个评论。
抱歉,我在纯PHP代码preg_match()上测试它,我忘了空输入将变为空,@wiktorstribi?呃,那应该是个答案
@Kenken9999还是谢谢
@偷猎者如果你读了文件,你会比别人更早找到答案。
@雷沃和你只是来告诉我你在我体内是多么的不受欢迎?
@偷猎者不是真的。重点是阅读手册可以防止人们误会。
@雷沃为我的愤怒反应感到抱歉,但这让人觉得很愚蠢。StackOverflow也是一个问愚蠢问题的地方。是的,我确实读过文档,但它并没有让我突然想到,我正忙于regex。
@我没有质疑你的知识。
|也是多验证规则的分隔符。
例如,以下内容是有效的:
$rules = ["price" =>"nullable|numeric|between:0,99" ];
要使用regex,需要切换到使用数组:
$rules = [
'price' => [ 'regex:/(^$|^\d+(,\d{1,2})?$)/' ]
];
文件中也指出了这一点:
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.
顺便说一句,最初的规则也可以做你想做的,也可以写成:
$rules [
'price' => [ 'nullable', 'numeric', 'between:0,99' ]
]