python - Python Regex 检查信用卡
问题描述
我创建了一个脚本来查找特定的卡号,其中包含在 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)
解决方案
您可以使用
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
引用下一组中的值(空字符串、空格或.
or -
)。环视用于确保在字符串中一致地使用定界符/分隔符。
在第二个正则表达式中,^((\d)([\s.-]?)(?!(\3?\2){3})){16}$
使用了类似的技术,即空格.
或被-
捕获到第 3 组中,并且可选地匹配后续量化组内的字符以引用相同的值。
推荐阅读
- google-tag-manager - 没有 gtm.linkClick 在谷歌标签管理器预览中为 CTRL 点击图片
- python - Keras IMDB 情绪分析
- reactjs - 将搜索过滤器移动到 MenuList
- android - 使用 Kotlin 的 MenuItem.SetOnActionExpandListener()
- python - 将 vtkResliceImageViewer 或 vtkImageViewer2 与 Python3+PyQt5 一起使用
- javascript - fabricjs - 将图像拖到画布上
- javascript - 调用子进程后WebSocket连接关闭
- c# - 找不到路径的一部分。'C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\Decks'
- jquery - Twitch API 响应中的“无法读取未定义的属性”错误
- java - 使用 Selenium 在 Java 上进行 TestNG