-2

我是 HTML 和 JavaScript 的新手。我们正在尝试使用 RegExp 函数使用以下正则表达式验证 IP 地址。但是这个正则表达式的问题在于验证并返回 true,对于无效的 IP 地址也是如此。

例如,当 IP 地址输入为时,正则表达式可以正常工作,但当 IP 地址输入为10.94.161.125时,它会返回 true 10/94/161/125

事实上,任何代替.(如@!#)的字符都不会使函数返回 false,而是返回 true。请让我知道确切的区别是什么“\”。是为了使正则表达式正常工作,其中为“。” 它没有使正则表达式以正确的方式工作。这是我需要澄清的地方。

正则表达式非工作案例 senario:

var ipRE = new RegExp( '^([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(\.([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])){3}$' );

正则表达式工作案例

var ipRE = new RegExp( '^([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(\\.([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])){3}$' );
4

2 回答 2

1

作为参考,如果有人来这里寻找答案:

反斜杠 (\) 可用于在字符串中插入撇号、换行符、引号和其他特殊字符。

例子:

var str = 'You\'re welcome';

如果不转义',字符串将在之后终止You

在您的正则表达式中,点需要转义,因为点在正则表达式中具有特殊含义。然后需要转义反斜杠,因为它在 javascript 中具有特殊含义。

于 2013-03-11T10:25:30.970 回答
0
ValidIpAddressRegex = "^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$";

和 :

ValidHostnameRegex = "^(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-]*[a-zA-Z0-9])\.)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\-]*[A-Za-z0-9])$";
于 2013-03-11T10:15:12.600 回答