2013-03-11 40 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