我需要编写一个不仅包含数字[0-9]
的正则表达式。如果没有明确指定组中所有可能的字符,我该怎么做呢?可以通过前瞻/后视来做到吗?例子:
034987694 - doesn't match
23984576s9879 - match
rtfsdbhkjdfg - match
=-0io[-09uhidkbf - match
9347659837564983467 - doesn't match
答案 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个非数字字符。