如何编写匹配包含10位数字(0-9)的字符串的正则表达式(Python或Java)。我不在乎它是否包含任何其他字符,并且10个数字不必是连续的。例如,我想跟随字符串匹配:" 2fdf675& * 85y989 $%#0"和" 3h2j9f88 __ + = 123..54"。关于如何做到这一点的任何想法??
答案 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)
这只会删除所有非数字并检查剩下的内容的长度。