2013-08-22 128 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