【发布时间】:2015-09-26 16:21:26
【问题描述】:
我正在使用 laravel 的验证器。我想验证信用卡的有效期。
输入有一个输入掩码99/99 - MM/YY。
我还想验证表达式的年份。所以如果 YY
如果 YY > 25 = 验证失败。
提前谢谢你!
【问题讨论】:
-
\/(?:1[6-9]|2[0-4])如果仅适用于一年,请尝试使用正则表达式。
标签: php regex validation
我正在使用 laravel 的验证器。我想验证信用卡的有效期。
输入有一个输入掩码99/99 - MM/YY。
我还想验证表达式的年份。所以如果 YY
如果 YY > 25 = 验证失败。
提前谢谢你!
【问题讨论】:
\/(?:1[6-9]|2[0-4]) 如果仅适用于一年,请尝试使用正则表达式。
标签: php regex validation
有一个库可以检查信用卡的所有数据
你通过 composer 安装它
"require": {
"inacho/php-credit-card-validator": "1.*"
},
那么您可以像这样验证日期;
$validDate = CreditCard::validDate('2013', '07'); // past date
var_dump($validDate);
或者如果您不想这样做,您可以在单独的字段中发送年份和月份(实际上您应该),然后在验证器中检查最小值和最大值 number min:1|max:12
月份和
min:2015|max:2025 for year
更详细的:
$validator = Validator::make(Input::all(),
array(
'month' =>'required|max:12|min:1'
)
);
if($validator->fails())
{
Session::flash('flash_message', 'Check the date you entered');
return Redirect::to('checkcreditcard')->withInput()->withErrors($validator);
}
else
{
更新:
这将为您提供 2 位数格式的当前年份,(因此它会给出 15)
$this_year = date("y");
然后在验证器中你可以这样做:
min:$this_year|max:$this_year+10
石榴石!!
【讨论】:
您不需要正则表达式来执行此操作。看看official documentation。 (我指的是5.1版本,但和之前的版本基本相同)。
public function store(Request $request)
{
$this->validate($request, [
'year' => 'required|digits_between:15,25',
]);
}
【讨论】: