IP表示法:
除了點分十進制,還有 CIDR 表示法,比如: 192.168.0.1/24
子網劃分裏CIDR用的比較多:
可以參考子網劃分的文章:https://blog.csdn.net/u012219045/article/details/60466352
正則表達式如下:
^(?:(?:[0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}(?:[0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\/([1-9]|[1-2]\d|3[0-2])$
親切有效:
源自菜鳥的Python代碼:
import re pattern = re.compile(r'^(?:(?:[0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}(?:[0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\/([1-9]|[1-2]\d|3[0-2])$') str = '192.168.0.1/24' print(pattern.search(str)) str = '192.168.0.1/0' print(pattern.search(str)) str = '192.168.0.1/33' print(pattern.search(str)) str = '192.168.0.1/' print(pattern.search(str)) str = '192.168.0.1' print(pattern.search(str))
源自菜鳥的JS代碼:
var pattern = /^(?:(?:[0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}(?:[0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\/([1-9]|[1-2]\d|3[0-2])$/,
str = '';
console.log(pattern.test(str));
源自菜鳥的GO語言:
package main
import (
"fmt"
"regexp"
)
func main() {
str := ""
matched, err := regexp.MatchString("^(?:(?:[0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}(?:[0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\/([1-9]|[1-2]\\d|3[0-2])$", str)
fmt.Println(matched, err)
}