CakePHP使用正则表达式验证蒙面信用卡

时间:2012-07-11 10:38:25

标签: php regex cakephp credit-card

我正在为我的用户创建更新结算信息部分。我目前正在将掩盖的信用卡号码传递给表格。如果用户只想更新他们的帐单地址,我不希望用户更新他们的信用卡信息。

我正在尝试使用正则表达式来匹配蒙面信用卡,但我无法获得任何正则表达式模式以匹配......即使是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,
            ),
    ),

任何想法都得到了极大的赞赏!

谢谢!!

3 个答案:

答案 0 :(得分:2)

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

/^.+$/

它可能会更好。

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

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

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

除非我遗漏了什么,否则无法理解为什么你需要正则表达式。

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

当提交表单时,如果此字段为空,则在保存之前只需unset数组键,因此现有的卡值保持不变。

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