我有这个正则表达式,我想替换" lb"部分参数传递了他们想要使用的重量,所以我拥有的是这个
protected function validateCheckWeight($attribute, $value, $parameters)
{
// this always outputs correctly either true or false
return preg_match('/^(?!0\d|0lb$)\d+(?:\.\d+)?lb$/', $value);
}
我想要的是这个,但在进行验证时它并不起作用
protected function validateCheckWeight($attribute, $value, $parameters)
{
return return preg_match('@/^(?!0\d|0' . $parameters[0] .'$)\d+(?:\.\d+)?' . $parameters[0] . '$/@', $value);
}
protected function validateCheckWeight($attribute, $value, $parameters)
{
dd('@/^(?!0\d|0' . $parameters[0] .'$)\d+(?:\.\d+)?' . $parameters[0] . '$/@');
// output "@/^(?!0\d|0kg$)\d+(?:\.\d+)?kg$/@"
return preg_match('@/^(?!0\d|0' . $parameters[0] .'$)\d+(?:\.\d+)?' . $parameters[0] . '$/@', $value);
// this always outputs false
}
答案 0 :(得分:1)
您的正则表达式@
和/
中有2个不同的分隔符。我刚刚确认,如果从正则表达式的开头和结尾删除@
,则对于评论中提到的输入,您的函数将返回true($value
= "kg"
, $parameters
= array('kg')
)。
答案 1 :(得分:0)
如果我正确理解了这个问题,你可以
return strlen(parameters[0]) == strlen(rtrim(parameters[0],'lb'));
但我想再也不能理解这一点。