我无法制作一个 mysql 正则表达式,它会在 IPv4 的每 3 个数字序列的开头删除零。问题是应该在数据库级别提供验证,我不知道如何制定正则表达式,它将用我的 IPv4 中的 emtpy 字符串替换所有 0.、00.、.0、.00。
我希望我的正则表达式做这样的事情:
如果我有 012.123.123.023 进入数据库,它应该保存为 12.123.123.23
谢谢 !
通过利用 MySQL 函数INET_ATON()
,INET_NTOA()
您可以可靠地将具有前导零的传入 IPv4 地址转换为没有前导零的相同字符串。换行INET_ATON()
以INET_NTOA()
首先将 IP 地址转换为其整数值,然后再转换回点分四边形。
mysql> SELECT INET_NTOA(INET_ATON('001.110.011.111'));
+-----------------------------------------+
| INET_NTOA(INET_ATON('001.110.011.111')) |
+-----------------------------------------+
| 1.110.11.111 |
+-----------------------------------------+
mysql> SELECT INET_NTOA(INET_ATON('1.110.11.111'));
+--------------------------------------+
| INET_NTOA(INET_ATON('1.110.11.111')) |
+--------------------------------------+
| 1.110.11.111 |
+--------------------------------------+
注意:NULL
如果输入的 IP 地址不是有效地址,这将返回。它不会返回原始字符串或从错误的 IP 地址中去除前导零:
mysql> SELECT INET_NTOA(INET_ATON('888.777.123.123'));
+-----------------------------------------+
| INET_NTOA(INET_ATON('888.007.123.123')) |
+-----------------------------------------+
| NULL |
+-----------------------------------------+