Regex 点之间数字的正则表达式
您好,我正在使用Java中的正则表达式处理这些场景:Regex 点之间数字的正则表达式,regex,Regex,您好,我正在使用Java中的正则表达式处理这些场景: String testtt = "aha.comment.1.app"; // should pass String testtt2 = "aha.comment1.app"; // should fail a.1.b.c.d.2.a // should pass a.2.b.c2.a.1. // should not pass 我的逻辑命题是: String regex = "
String testtt = "aha.comment.1.app"; // should pass
String testtt2 = "aha.comment1.app"; // should fail
a.1.b.c.d.2.a // should pass
a.2.b.c2.a.1. // should not pass
我的逻辑命题是:
String regex = ".\\.[0-9]\\..+";
但它不起作用
我想要一个正则表达式,它只检查整个字符串中是否有一个用两个点包装的数字/数字,例如.1.
,.22.
,并且字符可以保留在前后
其他测试场景:
String testtt = "aha.comment.1.app"; // should pass
String testtt2 = "aha.comment1.app"; // should fail
a.1.b.c.d.2.a // should pass
a.2.b.c2.a.1. // should not pass
有什么提示吗
当然,我使用的是testtt.matches(regex)
这些正则表达式可以帮助您假设字符串不能以点开头和结尾,一个选项是使用正向前瞻来断言点位
^(?=.+\.\d+\.)[^.\n\r]+(?:\.[^.\n\r]+)+$
在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.]*$
请参阅另一个类似的操作:
^\.?(?:\d+|[a-z]+)(?:\.(?:\d+|[a-z]+))*\.?$
这假设您正在对句点分隔字符串执行验证,该字符串在句点之间只能有数字或字母,不能同时有数字和字母
为什么
a.2.b.c2.a.1.
会失败?它包含.2.
所以根据你的描述这是一个通行证,不是吗?很好,如果它可以以点开始或结束呢?@Ernesto在这种情况下为什么会失败<代码>a.2.b.c2.a.1.因为“c2”不是由点分割的。无论如何,你一定是从Regex大学毕业的:非常感谢!真的很欣赏你的正则表达式技巧!