正则表达式只匹配10或12位数

时间:2017-05-09 06:44:13

标签: regex python-2.7

我试着写一个正则表达式来匹配10或12位数的组合。像:

1234567890 - 真实  123456789012 - 真实  12345678901 - 错误
 123456-错误

1234567890123-错误

仅匹配10或12位数字。 我试过这个:

"^[0-9]{10}|[0-9]{12}$"

3 个答案:

答案 0 :(得分:10)

你很亲密!

这是您正在寻找的正则表达式:^(\d{10}|\d{12})$。它检查数字(\d)。其余部分或多或少是您的代码,但括号除外。它捕获每个组。如果你想在没有它的情况下工作,你可以放松它们!

See it in action here

答案 1 :(得分:1)

你的正则表达式在一个字符串的开头匹配10个数字(之后允许更多的字符),或者字符串末尾的12个数字。使正则表达式工作的一个选项是:

"^[0-9]{10}$|^[0-9]{12}$"

虽然最好使用原始字符串作为模式:

r'^[0-9]{10}$|^[0-9]{12}$'

答案 2 :(得分:0)

还有另一种方法,您可以像这样进行操作。

^\d{10}(\d{2})?$