HTML5 IP 地址模式 - 如何修改模式以忽略“_”(下划线)字符

HTML5 pattern for IP address - how to modify pattern to ignore the "_" (underscore) character

我发现了以下用于验证 IP 地址语法的模式:

 pattern="((^|\.)((25[0-5])|(2[0-4]\d)|(1\d\d)|([1-9]?\d))){4}$"

但我需要修改它以忽略所有地方的 _ 个字符。那是因为我使用了一个输入掩码(它在散焦字段后删除了 _ 但 bootstrap 验证器插件有时没有捕捉到它)。

那么如何修改该正则表达式以忽略 _ 个字符?

应该有效的示例字符串:

 192.168.88.1__  
 192.168.88_.200
 192.16_.88_.2__
 192.168.88.2

为了匹配可选字符(出现 0 次或多次),您需要一个 * 量词。因此,要匹配数字后带有 _ 的 IP 地址,您可以在每个数字后添加 _*

((^|\.)((25[0-5]_*)|(2[0-4]\d_*)|(1\d\d_*)|([1-9]?\d_*))){4}_*$

demo

不过,我认为您可以安全地删除锚点,因为 HTML5 pattern 属性默认是锚定的。您还可以更改正则表达式以更智能地匹配 IP(前面不允许有点):

(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)_*(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)_*){3}

another demo