如何检查数字在python 3中的数字之间是否有破折号或间隙

时间:2016-11-19 17:33:28

标签: python-3.x

如何检查数字是否每4位有间隙或破折号?我有一个信用卡程序。信用卡有16位数字,可以是:

12345678909876121234-5678-1234-56781234 1234 5678 5678

如果信用卡只有这种形式,程序必须输出true。有人可以给我一个快速简便的方法吗?直到现在我做到了:

if len(creditcard)==16 and creditcard.isdigit() ......

1 个答案:

答案 0 :(得分:1)

你想要的是一个正则表达式。查看regex模块。我不是很擅长编写最有效的正则表达式,但是下面的表达式会匹配一个16位数字值和破折号分隔4个数字的组:

[0-9]{4}-[0-9]{4}-[0-9]{4}-[0-9]{4}

以下内容将匹配16位数字值与4个组之间的间隙

[0-9]{4}\s[0-9]{4}\s[0-9]{4}\s[0-9]{4}

以下将匹配16位数字值,没有间隙或空格

[0-9]{16}

您将使用regex模块编译这些模式,然后将它们与您收到的输入进行比较,以验证您的输入是否符合其中一种模式。根据需要扩展模式,并学习编写自己的基本正则表达式 - 它们对于在文本中查找模式非常有用:)

编辑:如评论中所述,可以使用\ d匹配所有数字,而不是我使用的[0-9]{4}方法,您可以编写\d{4}。然后,测试边界可确保您不会匹配长度超过16位的序列。以上示例将匹配任意长的数字序列,但这样: \b\d{4}\s\d{4}\s\d{4}\s\d{4}\b 我相信只会匹配一个16位数的序列(这里的主要区别是\b与词边界相匹配)。