2015-02-23 50 views
0

當卡號長度在15-19個字符之間變化時,是否可以使用正則表達式來替換卡號中的所有字符,除了左外4位和右外4位?用X代替內部信用卡號的正則表達式?

我一直在尋找,但找不到可變卡片長度的解決方案。

我正在構建一個sails.js應用程序。

(注:對於那些與PCI遵從的擔憂,我不存儲信用卡號碼和它不是一個活的應用程序)

回答

4

使用這種模式

(?<=\d{4})\d(?=\d{4}) 

和替換W/X
Demo

(?<=   # Look-Behind 
    \d   # <digit 0-9> 
    {4}   # (repeated {4} times) 
)    # End of Look-Behind 
\d    # <digit 0-9> 
(?=    # Look-Ahead 
    \d   # <digit 0-9> 
    {4}   # (repeated {4} times) 
)    # End of Look-Ahead 

如果您的引擎不支持向後看使用這種模式,而不是

^(\d{4})\d(?=\d{4})|\d(?=\d{4}) 

注:只爲9+位數 Demo

+0

哇,非常酷的網站正常工作。謝謝! – ngDeveloper 2015-02-23 23:34:56

+0

不錯!!!!!!!!!!!!!!! :) – vks 2015-02-24 04:57:08

+0

嘿,出於某種原因JavaScript不喜歡'?<=',它會引發錯誤並失敗。任何想法如何使這項工作?特別是,它不喜歡''。請參閱:https://regex101.com/r/yW4aZ3/195#javascript – ngDeveloper 2015-02-24 18:45:38