【问题标题】:Using RegExp function使用正则表达式函数
【发布时间】: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


【解决方案1】:

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

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

例子:

var str = 'You\'re welcome';

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

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

【讨论】:

  • 感谢您的澄清
【解决方案2】:
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])$";

【讨论】:

  • 在没有任何解释或上下文的情况下发布的那种复杂的正则表达式几乎不能算作答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-01-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多