为包含不仅数字

时间:2015-08-03 06:34:33

标签: java regex

我需要编写一个不仅包含数字[0-9]的正则表达式。如果没有明确指定组中所有可能的字符,我该怎么做呢?可以通过前瞻/后视来做到吗?例子:

034987694 - doesn't match
23984576s9879 - match
rtfsdbhkjdfg - match
=-0io[-09uhidkbf - match
9347659837564983467 - doesn't match

4 个答案:

答案 0 :(得分:2)

^(?!\\d+$).*$

这应该为你做。参见演示。

https://regex101.com/r/fM9lY3/1

否定将预测将检查字符串从开始到结束是否没有integers。您需要$以确保检查结束,否则它将在开始时检查。 / p>

答案 1 :(得分:1)

如果你只需要检测字符串是否只是数字,那么你可以简单地测试/\D/ - "如果在任何地方都有非数字"则成功。

答案 2 :(得分:1)

为什么不检查它是否只包含数字,如果不匹配

String[] strings = {"034987694", "23984576s9879",
    "rtfsdbhkjdfg",
    "=-0io[-09uhidkbf",
    "9347659837564983467"};
for (String s : strings) {
    System.out.printf("%s = %s%n", s, !s.matches("\\d*"));
}

<强>输出

034987694 = false
23984576s9879 = true
rtfsdbhkjdfg = true
=-0io[-09uhidkbf = true
9347659837564983467 = false

答案 3 :(得分:0)

您可以尝试下面的内容,

string.matches(".*\\D.*");

这需要至少1个非数字字符。