正则表达式匹配包含正好10位数的字符串

时间:2015-01-15 13:31:42

标签: regex

如何编写匹配包含10位数字(0-9)的字符串的正则表达式(Python或Java)。我不在乎它是否包含任何其他字符,并且10个数字不必是连续的。例如,我想跟随字符串匹配:" 2fdf675& * 85y989 $%#0"和" 3h2j9f88 __ + = 123..54"。关于如何做到这一点的任何想法??

3 个答案:

答案 0 :(得分:9)

试试:

^\D*(?:\d\D*){10}$

答案 1 :(得分:0)

如果你不试图把所有东西塞进一个正则表达式,那么可能会更清楚。我不懂Java或Python,但是你可以在Perl中做些什么:

$str =~ s/\D//g;  # Remove all non-digit characters
if ( length($str) == 10 ) ... # Must be left with 10 characters.

答案 2 :(得分:0)

这是一个正则表达式和java代码:

if (str.matches("(\\D*\\d){10}\\D*")) // FYI ^ and $ are implied in java

但在Java中,这是一种更容易理解的方式:

if (str.replaceAll("\\D", "").length() == 10)

这只会删除所有非数字并检查剩下的内容的长度。