嗨,我正在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]*..*
这些正则表达式可能有助于