点之间数字的正则表达式



嗨,我正在Java中为以下场景使用regex:

String testtt = "aha.comment.1.app"; // should pass
String testtt2 = "aha.comment1.app"; // should fail

我的逻辑命题是:

String regex = ".\.[0-9]\..+";

但它不起作用。。。

我想要一个正则表达式,它只检查整个字符串中是否有一个用两个点包裹的数字/数字,例如.1..22.,以及字符是否可以在前面和后面。

其他测试场景:

a.1.b.c.d.2.a // should pass
a.2.b.c2.a.1. // should not pass

有什么提示吗?

当然我用的是testtt.matches(regex)

假设字符串不能以点开始和结束,一种选择是使用正向前瞻来断言点数字点

^(?=.+.d+.)[^.nr]+(?:.[^.nr]+)+$

Regex演示

在Java中,如果您使用的是匹配项,并且带有双反斜杠

String regex = "(?=.+\.\d+\.)[^.\n\r]+(?:\.[^.\n\r]+)+";

如果点可以在任何地方,并且必须有数字点数字和字符a-z或点之间的数字:

^(?!.*(?:[a-z][0-9]|[0-9][a-z]))(?!.*?..)[a-z0-9.]*.d.[a-z0-9.]*$

查看另一个Regex演示

这样的东西会起作用:

^.?(?:d+|[a-z]+)(?:.(?:d+|[a-z]+))*.?$

这假设您正在执行以句点分隔的字符串的验证,该字符串的句点之间只能有数字或字母,而不能同时有数字和字母。

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

.*.[0-9]*..*

这些正则表达式可能有助于

最新更新