【问题标题】:CakePHP Validate Masked Credit Card With RegexCakePHP 使用正则表达式验证蒙面信用卡
【发布时间】:2012-07-10 23:09:08
【问题描述】:

我正在为我的用户创建一个更新账单信息部分。我目前正在向表单传递一个蒙面的信用卡号。如果用户只想更新他们的帐单地址,我不希望用户必须更新他们的信用卡信息。

我正在尝试使用正则表达式来匹配被屏蔽的信用卡,但我无法获得任何正则表达式模式来匹配...即使是 100% 通配符...

这里有几个我尝试过的例子......

================================================ =================

被屏蔽的信用卡值是 XXXXXXXXXXXX0012

================================================ =================

'creditcard' => array(
         'creditcard' => array(
            'rule' => array('cc', 'all', false, '^[.]+$'),
            'message' => 'Required',
            'allowEmpty' => false,
            'required' => true,
            ),
    ),

================================================ =================

    'creditcard' => array(
        'creditcard' => array(
            'rule' => array('cc', 'all', false, '/^[X]+[0-9](4,)$/'),
            'message' => 'Required',
            'allowEmpty' => false,
            'required' => true,
            ),
    ),

================================================ =================

    'creditcard' => array(
        'creditcard' => array(
            'rule' => array('cc', 'all', false, '/^[x]+[0-9]+$/i'),
            'message' => 'Required',
            'allowEmpty' => false,
            'required' => true,
            ),
    ),

非常感谢任何想法!

谢谢!!

【问题讨论】:

    标签: php regex cakephp credit-card


    【解决方案1】:

    ^$ 分别匹配整个字符串的开头和结尾,而不仅仅是单行。

    【讨论】:

      【解决方案2】:

      不明白为什么你需要正则表达式,除非我遗漏了什么。

      也许一种方法是将被屏蔽的卡号作为纯文本输出,并为新卡号提供一个文本框。

      表单提交时,如果该字段为空,则只需unset保存前的数组键,所以现有的卡值保持不变。

      如果有新号码,可以根据需要更新。

      【讨论】:

      • “也许一种方法是将被屏蔽的卡号作为纯文本输出,并为新卡号提供一个文本框。” 跳出框框的想法很好! =] 谢谢!
      【解决方案3】:

      不是一个完整的答案,但在您的第一个示例中, [ ] 中的句点实际上与字符 匹配。没有什么。因此,如果您将其更改为:

      /^.+$/
      

      它可能会更好。

      在第二个示例中,您应该使用花括号 { } 而不是括号来指定长度。像这样:

      /^[X]+[0-9]{4,}$/
      

      最后一个看起来不错。但是通过解决前两个问题,您至少可以开始找到问题的根源!

      【讨论】:

      • 第一个前后少了/的应该是/^.*$/
      • 确实!将它们添加到我的答案中。
      • /^[X]+[0-9]{4,}$/ 有效,事实证明,我团队中的一位开发人员已经从模型中覆盖了控制器中的验证,非常感谢你的帮助! =]
      猜你喜欢
      • 2010-11-30
      • 2015-09-14
      • 2018-08-15
      • 2019-02-26
      • 2016-07-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多