2011-05-24 96 views
0

我试图确保当用户通过我的表单提交它时,Rapidshare URL是有效的。Rapidshare网址不正确

这是我想出来的,到目前为止的正则表达式:

http://rapidshare.com/files/[0-9]+/[a-zA-Z0-9\._-]+ 

一个免费电子链接看起来是这样的:

http://rapidshare.com/files/168501977/some_random-file.zip 

我的模式相匹配,但不完全正确。举例来说,如果我们用这个输入:

http://rapidshare.com/files/168501977/some_random-file.zip£%^$ 

它仍然会匹配使用PHP函数preg_match(),让它穿过去,即使有该网址的结尾非法符号。我希望模式匹配整个输入,而不仅仅是匹配的随机长度。

任何帮助将不胜感激,欢呼!

+0

难道你不需要逃避'/'吗?所以'[0-9] + /'会变成'[0-9] + \ /'。 – Shaz 2011-05-24 17:48:40

回答

1

您需要锚定正则表达式模式。使用^来定位开头,并使用$来定位结尾。因此,模式变为:

^http://rapidshare.com/files/[0-9]+/[a-zA-Z0-9\._-]+$ 

这可以防止字符串的部分匹配,例如正在生成的示例。

0

使用^$验证字符串的开始和结束。例如:
^ht{2}p:\/{2}rapidshare\.com\/files\/\d+\/[\.a-zA-Z_-]+$