dep: fix matching ip4addr, ip6addr, ip4cidr

This commit is contained in:
Yousong Zhou
2018-10-22 12:57:24 +00:00
parent 1ad9a2fca1
commit 589ad4b077
2 changed files with 15 additions and 12 deletions
Generated
+2 -2
View File
@@ -1254,7 +1254,7 @@
[[projects]]
branch = "master"
digest = "1:201bff9d99a538dd71fd8e55bbbfda8a301fd89676d0668a2cedc574e1aeaa03"
digest = "1:2dd5cfa0e15bc1351229c0be3b09b0b7fe47d23e99d19edfba5b2402ddb1cf7b"
name = "yunion.io/x/pkg"
packages = [
"gotypes",
@@ -1288,7 +1288,7 @@
"utils",
]
pruneopts = "UT"
revision = "122c7d4ce76b4611b63d86af8e9bb2610ab55c20"
revision = "194153d51e1c1bd8a3b9545ee0bc1504ddcdcb4d"
[[projects]]
branch = "master"
+13 -10
View File
@@ -1,7 +1,9 @@
package regutils
import (
"net"
"regexp"
"strings"
)
var FUNCTION_REG *regexp.Regexp
@@ -11,9 +13,6 @@ var INTEGER_REG *regexp.Regexp
var FLOAT_REG *regexp.Regexp
var MACADDR_REG *regexp.Regexp
var COMPACT_MACADDR_REG *regexp.Regexp
var IPADDR_REG_PATTERN *regexp.Regexp
var IP6ADDR_REG *regexp.Regexp
var CIDR_REG_PATTERN *regexp.Regexp
var NSPTR_REG *regexp.Regexp
var NAME_REG *regexp.Regexp
var DOMAINNAME_REG *regexp.Regexp
@@ -43,9 +42,6 @@ func init() {
FLOAT_REG = regexp.MustCompile(`^\d+(\.\d*)?$`)
MACADDR_REG = regexp.MustCompile(`^([0-9a-fA-F]{2}:){5}[0-9a-fA-F]{2}$`)
COMPACT_MACADDR_REG = regexp.MustCompile(`^[0-9a-fA-F]{12}$`)
IPADDR_REG_PATTERN = regexp.MustCompile(`^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$`)
CIDR_REG_PATTERN = regexp.MustCompile(`^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}(\/\d{1,2})?$`)
IP6ADDR_REG = regexp.MustCompile(`^\s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])(.(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])(.(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])(.(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])(.(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])(.(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])(.(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])(.(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])){3}))|:)))(%.+)?\s*$`)
NSPTR_REG = regexp.MustCompile(`^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\.in-addr\.arpa$`)
NAME_REG = regexp.MustCompile(`^[a-zA-Z][a-zA-Z0-9._@-]*$`)
DOMAINNAME_REG = regexp.MustCompile(`^[a-zA-Z0-9-.]+$`)
@@ -97,19 +93,26 @@ func MatchCompactMacAddr(str string) bool {
}
func MatchIP4Addr(str string) bool {
return IPADDR_REG_PATTERN.MatchString(str)
ip := net.ParseIP(str)
return ip != nil && !strings.Contains(str, ":")
}
func MatchCIDR(str string) bool {
return CIDR_REG_PATTERN.MatchString(str)
ip, _, err := net.ParseCIDR(str)
if err != nil {
return false
}
return ip != nil && !strings.Contains(str, ":")
}
func MatchIP6Addr(str string) bool {
return IP6ADDR_REG.MatchString(str)
ip := net.ParseIP(str)
return ip != nil && strings.Contains(str, ":")
}
func MatchIPAddr(str string) bool {
return MatchIP4Addr(str) || MatchIP6Addr(str)
ip := net.ParseIP(str)
return ip != nil
}
func MatchPtr(str string) bool {