正则表达式中的反向引用(java) 此正则表达式用于验证ip地址

正则表达式中的反向引用(java) 此正则表达式用于验证ip地址,java,regex,Java,Regex,regex=“^([01]?\\d\\d?| 2[0-4]\\d | 25[0-5])\([01]?\\d\\d?| 2[0-4]\\d | 25[0-5])\([01]?\\d\\d?\\d?| 2[0-4]\\d | 25[0-5])\([01]?\\d?\\d?| 2[0-4]\\d | 25[0-5])” /!\修改版/\ 正则表达式=“^([01]?\\d\\d?\\2[0-4]\\d\25[0-5])\\.(\\1)\.(\\1)\.(\\1)$” 但是修改后的版本不起作用!!为什么

regex=
“^([01]?\\d\\d?| 2[0-4]\\d | 25[0-5])\([01]?\\d\\d?| 2[0-4]\\d | 25[0-5])\([01]?\\d\\d?\\d?| 2[0-4]\\d | 25[0-5])\([01]?\\d?\\d?| 2[0-4]\\d | 25[0-5])”

/!\修改版/\

正则表达式=
“^([01]?\\d\\d?\\2[0-4]\\d\25[0-5])\\.(\\1)\.(\\1)\.(\\1)$”


但是修改后的版本不起作用!!为什么它不工作???

\\1
要求与组1匹配的值完全相同,因此您的正则表达式只能找到类似的IP

123.123.123.123 
因为第一个元素存储在组1中,其余元素需要匹配它

你似乎在寻找的是


顺便说一句,我跳过了
^
$
标志,因为
匹配(regex)
默认情况下会添加它们,如果您想使用
匹配器.find()
则可能不需要它们,因为您可能正在某些文本中查找IP。

定义“不工作”。而且
\\1
期望与组1匹配的值完全相同,因此在类似regex的
([a-c])\\1
的情况下,它只能匹配
aa
bb
cc
,而不是
ac
,因为组1在这种情况下将保持
a
。不工作==它不可用:在这种情况下,你说的是什么意思“正确”?:)如果我给出input=000.12.12.034,正则表达式将返回false。但它应该返回true。我理解您的意图,java正则表达式不可能这样做,因为它没有重用子模式的功能。但是请记住,断言“更短的模式更快”“是完全错误的。我尝试了你的正则表达式,但它给我一个错误
找不到符号([01]?\\d\\d?;2[0-4]\\d | 25[0-5])(\\.([01]?\\d\\d?;2[0-4]\\d | 25[0-5]){3}
和指向25[0-5]@syed\sami的向上箭头。你到底是如何使用这个正则表达式的?你把它当绳子用了吗?我把它当绳子用了。。就像这个
stringip=(我在这里的输入);System.out.println(ip.matches(regex))非常感谢@Pshemo^_^
String regex = "([01]?\\d\\d?|2[0-4]\\d|25[0-5])(\\.([01]?\\d\\d?|2[0-4]\\d|25[0-5])){3}";