Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 点之间数字的正则表达式_Regex - Fatal编程技术网

Regex 点之间数字的正则表达式

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 = "

您好,我正在使用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 = ".\\.[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大学毕业的:非常感谢!真的很欣赏你的正则表达式技巧!