这将解决您的问题:
((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])(?!\d)\.??){4}
锚定(见测试结果):
^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])$
试验结果:
// Valid IP addresses
// 1.2.3.4
// 255.255.255.255
// Invalid IP addresses
// 1.2.3
// 1.2.3.
// .1.2.3
// 1.2.3.4.5.6.7.8 (use anchors ^ and $ to skip these if needed, since 1.2.3.4 and 5.6.7.8 will still be captured)
// 999.999.999.999
// 299.299.299.299
// 001.002.003.004 (these use octal notation, not decimal)
锚定的正则表达式不会匹配文本内部,只有当您想要对只应包含 IP 的字符串进行非常严格的匹配时
更新:
现场结果在这里