在我的react中,我有一个输入来验证字符串是否是IPV4地址。
这是我的RegEx:
^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$
测试案例:
192.168.0.1
在我的应用程序中的
192.168.0.
在我的应用程序中的
192.168.0
在我的应用程序中的
192.168.
在我的应用程序中的
192.168
在我的应用程序中的
我不知道这里出了什么问题..。在一些随机的regex测试网站上,我的regex字符串似乎工作得很好,但是在我的应用程序中,它不.
你们中的一个知道任何与这个问题有关的事..。
谢谢你抽出时间大卫
发布于 2022-07-22 09:09:40
我在代码中是这样使用的:
const ipAddressValidationRegExString = '^(25[0-5]|2[0-4][0-9]|1?[0-9]?[0-9])\\.(25[0-5]|2[0-4][0-9]|1?[0-9]?[0-9])\\.(25[0-5]|2[0-4][0-9]|1?[0-9]?[0-9])\\.(25[0-5]|2[0-4][0-9]|1?[0-9]?[0-9])$'
问题是\\
正确的正则表达式:
const ipAddressValidationRegExString = '^(25[0-5]|2[0-4][0-9]|1?[0-9]?[0-9])**\\\\**.(25[0-5]|2[0-4][0-9]|1?[0-9]?[0-9])**\\\\**.(25[0-5]|2[0-4][0-9]|1?[0-9]?[0-9])**\\\\**.(25[0-5]|2[0-4][0-9]|1?[0-9]?[0-9])$'
发布于 2022-07-22 08:48:43
忘记正则表达式。那些永远都是写的--一次读--再也不会了。只需使用标准的解析工具就可以找到一个帮助函数:
let isInRange = (x, min, max) => {
return ((x >= min) && (x <= max));
}
let isValidAddress = (addr) => {
try {
let parts = addr.split('.');
let values = [];
if (parts.length != 4) {
return false;
}
for (let i = 0; i < 4; i++) {
values[i] = parseInt(parts[i]);
}
return (isInRange(values[0], 0, 255) && isInRange(values[1], 0, 255) &&
isInRange(values[2], 0, 255) && isInRange(values[3], 0, 255));
}
catch (err) {
// any exception throw above => return false
}
return false;
}
https://stackoverflow.com/questions/73077303
复制相似问题