2013-08-22 126 views
0

我知道已經有驗證鏈接的問題。但我很不好用正則表達式,我不知道如何驗證用戶輸入(在HTML),就相當於這些網址:驗證特定鏈接的鏈接php

http://www.domain.com/?p=123456abcde 

http://www.domain.com/doc/123456abcde 

我想這是像這

/^(http://)(www)((\.[A-Z0-9][A-Z0-9_-]*).com/?p=((\.[A-Z0-9][A-Z0-9_-]*) 

我需要正則表達式或兩個URL。謝謝

+0

爲什麼'v'你想,如果你的問題狀態'p'??? – Technoh

+0

對不起,我是指p。是的,這是錯誤的 – Alex

回答

1

這將匹配你的字符串。

(http:\/\/)?(www\.)?([A-Z0-9a-z][A-Z0-9a-z_-]*).com\/(\?p=)?([A-Z0-9a-z][\/A-Za-z0-9_-]*) 

我強烈建議使用正則表達式檢查,你可以找到一些(幾乎)所有的操作系​​統,甚至有一些網上的,如:http://regexpal.com/http://www.quanetic.com/Regex

+0

謝謝,這是偉大的;) – Alex

+2

[http://regex101.com/](http://regex101.com/r/eU5cB7)也不錯:) – Enissay

+0

和一個很好的正則表達式教程可以發現@ http ://www.regular-expressions.info/ – Enissay

1

這將使用您指定的格式匹配任何有效的域。

http(s)?:\/\/(www\.)?[a-zA-Z0-9-\.]+\.[a-z]{2,6}\/(\?p=|doc\/)[a-z0-9]+ 

更換[a-z]{2,6}com如果只想.com域。在行動中看到它here

2

這可能不是正則表達式的工作,而是現有工具的選擇語言。正則表達式不是一個魔術棒,你在涉及字符串的每一個問題上都會揮手致意。您可能想要使用已經編寫,測試和調試的現有代碼。

在PHP中,使用parse_url函數。

Perl:URI module

紅寶石:URI module

.NET:'Uri' class

+0

PHP的'parse_url'函數並非如此,正如該函數的文檔中所述:'該函數並不是要驗證給定的URL,它只是將其分解爲上面列出的部分。 ['filter_var'](http://php.net/manual/en/function.filter-var.php)似乎更合適。 – PLPeeters