要创建一个适用于AMEX卡号的正则表达式,可以使用以下代码示例:
import re
def split_amex(card_number):
pattern = r'^3[47][0-9]{13}$'
if re.match(pattern, card_number):
return re.findall(r'.{1,4}', card_number)
else:
return None
# 测试
card_number = '378282246310005'
result = split_amex(card_number)
if result:
print(result)
else:
print("Invalid AMEX card number")
这段代码中,我们首先定义了一个名为split_amex的函数,它接受一个卡号作为输入。然后,我们定义了一个正则表达式模式pattern,用于匹配AMEX卡号的格式。这个模式表示卡号以3开头,接着是47,后面跟着13个数字。接下来,我们使用re.match()函数来检查传入的卡号是否符合模式。如果符合,我们使用re.findall()函数将卡号分割成4个数字为一组的列表。如果不符合,我们返回None。
最后,我们通过调用split_amex()函数来测试代码,并根据结果打印出相关信息。如果卡号有效,我们打印出分割后的列表;如果卡号无效,我们打印出"Invalid AMEX card number"。