如何在Go语言中编写正则验证IPv6子网掩码?
IPv6子网掩码验证正则表达式实现问题
以下是有效的IPv6子网掩码列表:
8000:: c000:: e000:: f000:: f800:: fc00:: fe00:: ff00:: ff80:: ffc0:: ffe0:: fff0:: fff8:: fffc:: fffe:: ffff:: ffff:8000:: ffff:c000:: ffff:e000:: ffff:f000:: ffff:f800:: ffff:fc00:: ffff:fe00:: ffff:ff00:: ffff:ff80:: ffff:ffc0:: ffff:ffe0:: ffff:fff0:: ffff:fff8:: ffff:fffc:: ffff:fffe:: ffff:ffff:: ffff:ffff:8000:: ffff:ffff:c000:: ffff:ffff:e000:: ffff:ffff:f000:: ffff:ffff:f800:: ffff:ffff:fc00:: ffff:ffff:fe00:: ffff:ffff:ff00:: ffff:ffff:ff80:: ffff:ffff:ffc0:: ffff:ffff:ffe0:: ffff:ffff:fff0:: ffff:ffff:fff8:: ffff:ffff:fffc:: ffff:ffff:fffe:: ffff:ffff:ffff:: ffff:ffff:ffff:8000:: ffff:ffff:ffff:c000:: ffff:ffff:ffff:e000:: ffff:ffff:ffff:f000:: ffff:ffff:ffff:f800:: ffff:ffff:ffff:fc00:: ffff:ffff:ffff:fe00:: ffff:ffff:ffff:ff00:: ffff:ffff:ffff:ff80:: ffff:ffff:ffff:ffc0:: ffff:ffff:ffff:ffe0:: ffff:ffff:ffff:fff0:: ffff:ffff:ffff:fff8:: ffff:ffff:ffff:fffc:: ffff:ffff:ffff:fffe:: ffff:ffff:ffff:ffff:: ffff:ffff:ffff:ffff:8000:: ffff:ffff:ffff:ffff:c000:: ffff:ffff:ffff:ffff:e000:: ffff:ffff:ffff:ffff:f000:: ffff:ffff:ffff:ffff:f800:: ffff:ffff:ffff:ffff:fc00:: ffff:ffff:ffff:ffff:fe00:: ffff:ffff:ffff:ffff:ff00:: ffff:ffff:ffff:ffff:ff80:: ffff:ffff:ffff:ffff:ffc0:: ffff:ffff:ffff:ffff:ffe0:: ffff:ffff:ffff:ffff:fff0:: ffff:ffff:ffff:ffff:fff8:: ffff:ffff:ffff:ffff:fffc:: ffff:ffff:ffff:ffff:fffe:: ffff:ffff:ffff:ffff:ffff:: ffff:ffff:ffff:ffff:ffff:8000:: ffff:ffff:ffff:ffff:ffff:c000:: ffff:ffff:ffff:ffff:ffff:e000:: ffff:ffff:ffff:ffff:ffff:f000:: ffff:ffff:ffff:ffff:ffff:f800:: ffff:ffff:ffff:ffff:ffff:fc00:: ffff:ffff:ffff:ffff:ffff:fe00:: ffff:ffff:ffff:ffff:ffff:ff00:: ffff:ffff:ffff:ffff:ffff:ff80:: ffff:ffff:ffff:ffff:ffff:ffc0:: ffff:ffff:ffff:ffff:ffff:ffe0:: ffff:ffff:ffff:ffff:ffff:fff0:: ffff:ffff:ffff:ffff:ffff:fff8:: ffff:ffff:ffff:ffff:ffff:fffc:: ffff:ffff:ffff:ffff:ffff:fffe:: ffff:ffff:ffff:ffff:ffff:ffff:: ffff:ffff:ffff:ffff:ffff:ffff:8000:0 ffff:ffff:ffff:ffff:ffff:ffff:c000:0 ffff:ffff:ffff:ffff:ffff:ffff:e000:0 ffff:ffff:ffff:ffff:ffff:ffff:f000:0 ffff:ffff:ffff:ffff:ffff:ffff:f800:0 ffff:ffff:ffff:ffff:ffff:ffff:fc00:0 ffff:ffff:ffff:ffff:ffff:ffff:fe00:0 ffff:ffff:ffff:ffff:ffff:ffff:ff00:0 ffff:ffff:ffff:ffff:ffff:ffff:ff80:0 ffff:ffff:ffff:ffff:ffff:ffff:ffc0:0 ffff:ffff:ffff:ffff:ffff:ffff:ffe0:0 ffff:ffff:ffff:ffff:ffff:ffff:fff0:0 ffff:ffff:ffff:ffff:ffff:ffff:fff8:0 ffff:ffff:ffff:ffff:ffff:ffff:fffc:0 ffff:ffff:ffff:ffff:ffff:ffff:fffe:0 ffff:ffff:ffff:ffff:ffff:ffff:ffff:0 ffff:ffff:ffff:ffff:ffff:ffff:ffff:8000 ffff:ffff:ffff:ffff:ffff:ffff:ffff:c000 ffff:ffff:ffff:ffff:ffff:ffff:ffff:e000 ffff:ffff:ffff:ffff:ffff:ffff:ffff:f000 ffff:ffff:ffff:ffff:ffff:ffff:ffff:f800 ffff:ffff:ffff:ffff:ffff:ffff:ffff:fc00 ffff:ffff:ffff:ffff:ffff:ffff:ffff:fe00 ffff:ffff:ffff:ffff:ffff:ffff:ffff:ff00 ffff:ffff:ffff:ffff:ffff:ffff:ffff:ff80 ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffc0 ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffe0 ffff:ffff:ffff:ffff:ffff:ffff:ffff:fff0 ffff:ffff:ffff:ffff:ffff:ffff:ffff:fff8 ffff:ffff:ffff:ffff:ffff:ffff:ffff:fffc ffff:ffff:ffff:ffff:ffff:ffff:ffff:fffe ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff
我需要编写验证上述格式IPv6子网掩码的正则表达式,想知道是否可以用单个正则实现该验证?
我了解到可以通过两个独立正则实现,但希望合并成一个:
- 第一个正则确保输入由一系列冒号和F组成,后跟8/C/E/F之一,再跟一串零,可选择后跟::或:0:
^[fF:]*[8cCeEfF]0*(?::[0:])?$
- 第二个正则要求冒号出现在固定位置:
^(?:(?:[^:]{4}:){1,6}:|(?:[^:]{4}:){7}(?:0|[^:]{4}))$
原本可以用前瞻合并这两个正则,但Go语言不支持前瞻。是否有其他方法合并这两个正则,或有其他实现方式?
内容的提问来源于stack exchange,提问作者Rupesh Choudhary
相关产品推荐
相关产品推荐

