具有N个数字的字符串

4

我需要在Java中使用正则表达式得到一些帮助。

我们有一个字符串,我想让String.matches返回"true",当且仅当该字符串包含N个数字。

例如(N = 12):

+012345678900 - true

0123-4567-0000 - true;

但是:

+0123456789 - false

0123-4567-000000 - false.

我尝试了这个(.*[0-9].*){N}和这个^(.*[0-9].*){N}$,但是结果是错误的。


注意:并非所有国家都有十位数字,也不是所有国家的电话号码每个数字位数相同。 - Peter Lawrey
1个回答

5
你可以尝试这个:
^(?:\\D*\\d){12}\\D*$

matches方法不需要锚点,因此

(?:\\D*\\d){12}\\D*

足以满足需求的是...

\\D匹配除数字外的任何字符。因此,(?:\\D*\\d){12}确保必须存在任意数量的非数字字符,但它必须包含确切的12个数字。最后\\D*匹配零个或多个非数字字符。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接