php正则匹配价格,关于php:Laravel正则表达式验证价格或空

我想做一个雷吉士的价格或空。我有实际工作的价格部分(荷兰语用逗号代替点)

/^\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' ]

]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值