我創建了一個腳本來查找特定的卡號,其中包含在串列 credit_cards 中。簡單的功能,它只是根據列出的正則運算式模式將每個標記為有效/無效。
我的問題源于了解如何實施此正則運算式檢查,包括空格和句點。因此,如果一張卡有 3423.3423.2343.3433 或 3323 3223 442 3234。我確實包含連字符作為我正在檢查的分隔符,但我如何還包含多個分隔符,如句點和空格?
這是我的腳本-
import re
credit_cards = ['6011346728478930','5465625879615786','5711424424442444',
'5000-2368-7954-3214', '4444444444444444', '5331625879615786', '5770625879615786',
'5750625879615786', '575455879615786']
def World_BINS(credit_cards):
valid_BINS = r"^5(?:465|331|000|[0-9]{2})(-?\d{4}){3}$"
do_not_repeat = r"((\d)-?(?!(-?\2){3})){16}"
filters = valid_BINS, do_not_repeat
for num in credit_cards:
if all(re.match(f, num) for f in filters):
print(f"{num} is Valid")
else:
print (f"{num} is invalid")
World_BINS(credit_cards)
uj5u.com熱心網友回復:
您可以使用
import re
credit_cards = ['5000 2368 7954 3214','5000.2368.7954.3214','6011346728478930','5465625879615786', '5711424424442444', '5000-2368-7954-3214', '4444444444444444', '5331625879615786', '5770625879615786','5750625879615786', '575455879615786']
def World_BINS(credit_cards):
valid_BINS = r"^5(?:465|331|000|[0-9]{2})(?=([\s.-]?))(\1\d{4}){3}$"
do_not_repeat = r"^((\d)([\s.-]?)(?!(\3?\2){3})){16}$"
filters = [valid_BINS, do_not_repeat]
for num in credit_cards:
if all(re.match(f, num) for f in filters):
print(f"{num} is Valid")
else:
print (f"{num} is invalid")
World_BINS(credit_cards)
請參閱Python 演示。
第(?=([\s.-]?))(\1\d{4}){3}一個正則運算式中的 捕獲一個空格 ( \s),.或-作為可選字符放入組 1,然后\1參考下一組中的值(空字串或空格,或.或-)。環視用于確保在字串中一致使用分隔符/分隔符。
在第二個正則運算式中,^((\d)([\s.-]?)(?!(\3?\2){3})){16}$使用了類似的技術,空格.或被-捕獲到組 3 中,并且字符可選地在隨后的量化組內匹配以參考相同的值。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/316082.html
