2013-03-11 32 views
-2

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

例如,当输入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}$'); 
+2

您显示的正则表达式不会暴露您描述的问题。发布代码*实际上*使用,甚至更好,首先尝试自己发现差异。 – Tomalak 2013-03-11 10:14:00

+0

这个正则表达式完美地工作。 – hank 2013-03-11 10:16:11

+0

所以你*实际上有*工作代码,现在粘贴破碎的代码,所以你可以问一个问题?那应该完成什么?你为什么不问你真正想问的问题? – Tomalak 2013-03-11 10:21:12

回答

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])$"; 
+2

没有任何解释或上下文的复杂度的正则表达式几乎不能算作答案。 – Tomalak 2013-03-11 10:26:47

1

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

反斜杠(\)可以用来插入撇号,新的线, 报价,和其他特殊字符为一个字符串。

例子:

var str = 'You\'re welcome'; 

没有逃脱',后You

在你的正则表达式,该点需要转义字符串将终止,因为一个点在定期特殊含义表达。反斜杠然后需要被转义,因为它在javascript中有特殊的含义。

+0

感谢您的澄清 – user2156293 2013-03-11 10:39:10