我在this答案中找到了ipv4的正则表达式。
是:
^(?:(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)(:?\.|$)){4})$
对于我来说很明显,对于以空格分隔的ipv4地址,此正则表达式将起作用:
^(((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)(\\.|$)){4})( ((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)(\\.|$)){4})*$
“连接”地址的想法与用空格分隔的数字相同:
^[0-9]( [0-9])*$
但是令人惊讶的是,它不适用于更复杂的正则表达式,例如ipv4地址。为什么?
我试图用ip地址简化这种情况,并意识到正则表达式:
^(?:(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)(:?\.|$)){4}) $
与字符串1.2.3.4
(末尾的空格)不匹配。为什么?
为什么我的尝试不起作用,以及(可选)用空格分隔的ipv4地址的正确正则表达式是什么?
我使用this服务来测试我的正则表达式。