【发布时间】:2013-03-11 10:08:17
【问题描述】:
我是 HTML 和 JavaScript 的新手。我们正在尝试使用 RegExp 函数使用以下正则表达式验证 IP 地址。但是这个正则表达式的问题在于验证并返回 true,对于无效的 IP 地址也是如此。
例如,当 IP 地址输入为 10.94.161.125 时,正则表达式正常工作,但当 IP 地址输入为 10/94/161/125 时,它返回 true。
事实上,任何代替. 的字符(如@、!、# 等)都不会使函数返回false,而是返回true。请让我知道确切的区别是什么“\”。是为了使正则表达式正常工作,其中为“。”它没有使正则表达式以正确的方式工作。这是我需要澄清的地方。
正则表达式不工作的情况:
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}$' );
【问题讨论】:
-
您显示的正则表达式没有暴露您描述的问题。发布您实际使用的代码,更好的是,先尝试自己发现差异。
-
这个正则表达式完美运行。
-
所以你实际上有工作代码,现在粘贴损坏的代码只是为了你可以提出问题?那应该完成什么?你为什么不问你真正想问的问题?
-
我第一次发布问题时错误地粘贴了工作代码。我试图找出额外的“\\”之间的区别。正在解决问题。
-
了解 JavaScript 字符串和正则表达式中的字符转义。您似乎错过了一个非常基本的概念,不应该在不了解它的情况下继续使用正则表达式。
标签: javascript regex validation