匹配完整IP地址:
如:127.0.0.1, 不能匹配127.01.1.1,
^(1\d{2}|2[0-4]\d|25[0-5]|[0-9][0-9]?)\.(1\d{2}|2[0-4]\d|25[0-5]|[0-9][0-9]?)\.(1\d{2}|2[0-4]\d|25[0-5]|[0-9][0-9]?)\.(1\d{2}|2[0-4]\d|25[0-5]|[0-9][0-9]?)$
String reg = "(?!.*(.)\\1{4}.*)([\\dA-HJ-NPR-Z]{12}[\\d]{5})" ;
环视的作用相当于对其所在位置加了一个附加条件,只有满足这个条件,环视子表达式才能匹配成功。
环视主要有以下4个用法:(?<=exp)
匹配前面是exp的数据(?<!exp)
匹配前面不是exp的数据(?=exp)
匹配后面是exp的数据(?!exp)
匹配后面不是exp的数据
示例四:(?<=B)AAA
匹配前面是B的数据,即BAAA匹配,而CAAA不匹配(?<!B)AAA
匹配前面不是B的数据,即CAAA匹配,而BAAA不匹配AAA(?=B)
匹配后面是B的数据,即AAAB匹配,而AAAC不匹配AAA(?!B)
匹配后面不是B的数据,即AAAC能匹配,而AAAB不能匹配
另外,还会看到(?!B)[A-Z]
这种写法,其实它是[A-Z]范围
里,排除B
的意思,前置的(?!B)只是对后面数据的一个限定,从而达到过滤匹配的效果。
`[A-Z](?<=B)` [A-Z]范围等于B
`[A-Z](?<!B)` [A-Z]范围排除B
`(?!B)[A-Z]` [A-Z]范围排除B
"(\\w+?)(?=ab)ab", "12ab34ab56ab78age"
//12 、34、56