2012-07-11 72 views
0

我正在爲我的用戶創建更新結算信息部分。我目前正在將一張蒙面的信用卡號碼傳遞給表單。如果用戶只想更新他們的帳單地址,我不希望用戶更新他們的信用卡信息。CakePHP使用正則表達式驗證僞造信用卡

我試圖用正則表達式匹配蒙面信用卡,但我一直沒能得到任何正則表達式模式來匹配......甚至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, 
      ), 
    ), 

任何想法非常讚賞!

謝謝!

回答

2

不是一個完整的答案,但在第一個例子中,[]內的句號實際上與該字符匹配。沒有什麼。所以如果你改變那個:

/^.+$/ 

它可能會更好。

在第二個示例中,您應該使用大括號{}而不是括號來指定長度。像這樣:

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

儘管最後一個看起來不錯。但通過解決前兩個問題,您至少可以開始尋找問題的根源!

+0

和第一個在'/'前後都應該是'/ ^。* $ /' – 2012-07-11 19:14:30

+0

確實!將它們添加到我的答案中。 – SilverSnake 2012-07-11 19:17:29

+1

/^ [X] + [0-9] {4,} $/works,事實證明,我的團隊中的一位開發人員已經從控制器中的模型中覆蓋了驗證,非常感謝您的幫助! =] – 2012-07-12 02:54:48

0

^$分別匹配整個字符串的開始和結束,而不僅僅是單獨的行。

0

看不出爲什麼你需要這個正則表達式,除非我失去了一些東西。

也許做到這一點的一種方法是輸出蒙板卡號作爲純文本,並提供新卡號的文本框。

當表單提交時,如果該字段爲空,那麼在保存之前只需unset數組鍵,所以現有卡的值保持不變。

如果有新號碼,您可以根據需要進行更新。

+0

「也許有一種方法可以輸出蒙面卡片號碼,只需輸入純文本,併爲新卡片號碼提供一個文本框。」這是一種很好的思維方式! =]謝謝! – 2012-07-12 02:56:12