带有N位数的字符串

时间:2015-11-30 09:45:35

标签: java regex

我需要一些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}$。但它不正确。

1 个答案:

答案 0 :(得分:5)

你可以试试这个,

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

matches方法不需要锚点,所以

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

就够了..

\\D匹配任何字符,但不匹配数字。所以(?:\\D*\\d){12}确保必须存在任何非dgit字符,但它必须包含12位数字。最后\\D*匹配零个或多个非数字字符。