【问题标题】:Laravel - Regular Expression to validate credit card expiryLaravel - 验证信用卡到期的正则表达式
【发布时间】:2015-09-26 16:21:26
【问题描述】:

我正在使用 laravel 的验证器。我想验证信用卡的有效期。

输入有一个输入掩码99/99 - MM/YY。 我还想验证表达式的年份。所以如果 YY

如果 YY > 25 = 验证失败。

提前谢谢你!

【问题讨论】:

  • \/(?:1[6-9]|2[0-4]) 如果仅适用于一年,请尝试使用正则表达式。

标签: php regex validation


【解决方案1】:

有一个库可以检查信用卡的所有数据

你通过 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

石榴石!!

【讨论】:

    【解决方案2】:

    您不需要正则表达式来执行此操作。看看official documentation。 (我指的是5.1版本,但和之前的版本基本相同)。

    public function store(Request $request)
    {
        $this->validate($request, [
            'year' => 'required|digits_between:15,25',
        ]);
    }
    

    【讨论】:

    • 我已经改进了答案(希望如此),并包含了确定当前年份和 10 年后年份的代码,因此它是动态的。
    猜你喜欢
    • 2015-09-14
    • 2018-08-15
    • 2010-11-30
    • 2016-03-12
    • 2016-07-31
    • 2019-02-26
    • 1970-01-01
    • 1970-01-01
    • 2012-07-10
    相关资源
    最近更新 更多