给出两个版本:
版本1【js】:
^(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])$
缺点在于没有识别首位的0
版本2【C】:
^([0-9]|[1-9][0-9]|1[0-9]{1,2}|2[0-4][0-9]|25[0-5]).([0-9]|[1-9][0-9]|1[0-9]{1,2}|2[0-4][0-9]|25[0-5]).([0-9]|[1-9][0-9]|1[0-9]{1,2}|2[0-4][0-9]|25[0-5]).([0-9]|[1-9][0-9]|1[0-9]{1,2}|2[0-4][0-9]|25[0-5])$
可以缩写为
^([0-9].|[1-9][0-9].|1[0-9]{1,2}.|2[0-4][0-9]|25[0-5].){3}([0-9]|[1-9][0-9]|1[0-9]{1,2}|2[0-4][0-9]|25[0-5])$
注意\d是js特有的数字集合,c里面不识别,可用[[:digit:]]代替。
参考:
https://blog.youkuaiyun.com/stpeace/article/details/26967713

博客给出了IP地址正则表达式的两个版本,JS版本存在无法识别首位0的缺点;C版本可进行缩写,同时指出JS特有的数字集合\\d在C里不被识别,可用[[:digit:]]代替,并提供了相关参考链接。
447

被折叠的 条评论
为什么被折叠?



