| Title | Test
                    Find
                    
                    Pattern Title | 
            
                | Expression | ^(ht|f)tp(s?)\:\/\/[a-zA-Z0-9\-\._]+(\.[a-zA-Z0-9\-\._]+){2,}(\/?)([a-zA-Z0-9\-\.\?\,\'\/\\\+&%\$#_]*)?$ | 
            
                | Description | Cheap and cheerful URL checker. Requires a http/https/ftp at the start and will then allow anything starting with at least a <something>.<something>.<something> then valid characters separated by dots and slashes | 
            
                | Matches | http://www.thedaddy.org | http://forum.thedaddy.org/index.html | ftp://hows.it.going_buddy/checkit/o | 
            
                | Non-Matches | www.thedaddy.org | http://hello | ftp://check.it | 
            
                | Author | Rating:  John Main | 
            
                | Source |  | 
            
              | Your Rating |  | 
        
    
 
    
    
     
        
                
	                Title: Port numbers not allowed
	                Name: Roger
	                Date: 5/25/2005 2:34:18 PM
	                Comment: 
This expression fails to match a url with a port number specification. For example, http://www.mydomain:8080/somedir   will fail
                
                
            
                
	                Title: Try mine
	                Name: Justin Perkins
	                Date: 4/18/2005 8:27:29 PM
	                Comment: 
Check the comments before posting Antonio, mine matches your URI just fine.
                
                
            
                
	                Title: Needs improvement
	                Name: antonio
	                Date: 4/11/2005 7:12:52 PM
	                Comment: 
FAILED: 
http://host.domain.com/folder/document.html?var=value
                
                
            
                
	                Title: Great Pattern, and...
	                Name: Justin Perkins
	                Date: 3/7/2005 11:59:58 PM
	                Comment: 
The pattern by John Main does not match anything after a ?, so any querystring will be lopped off. Use the original with the additional suggestions by Brian and Neik (assuming you do an HtmlEncode() on the string before matching)...
(ht|f)tp(s?)\:\/\/[a-zA-Z0-9\-\._]+(\.[a-zA-Z0-9\-\._]+){2,}(\/?)([a-zA-Z0-9\-\.\?\,\'\/\\\+=&%\$#_]*)?
                
                
            
                
	                Title: This works better
	                Name: John Main
	                Date: 3/6/2005 6:39:40 AM
	                Comment: 
^(ht|f|Ht|F)(tp)(s?)\:\/\/([a-zA-Z0-9\-_~]+)(\.[a-zA-Z0-9\-\._~]+)+(\/?)([^\">\<\s]*)$
                
                
            
                
	                Title: HTML Entities
	                Name: Niek
	                Date: 3/5/2005 9:32:44 AM
	                Comment: 
It also doesn't support html entities. All special characters on HTML pages should be entities, and so & should be & (only one seen in URL's)
If you use this with URL's with entities, change & to (&)
                
                
            
                
	                Title: Slashes
	                Name: John Main
	                Date: 3/3/2005 12:14:45 PM
	                Comment: 
If you're getting a rejected character then inserting a backslash before it normally does the trick
                
                
            
                
	                Title: Querystring Probs
	                Name: Brian
	                Date: 3/3/2005 10:05:34 AM
	                Comment: 
I was having querystring probs, its not alowing the = as a valid charactor. I just added it after +..
^(ht|f)tp(s?)\:\/\/[a-zA-Z0-9\-\._]+(\.[a-zA-Z0-9\-\._]+){2,}(\/?)([a-zA-Z0-9\-\.\?\,\'\/\\\+=&%\$#_]*)?$
                
                
            
                
	                Title: MS
	                Name: SHEETAL
	                Date: 2/24/2005 1:58:00 AM
	                Comment: 
Really Nice
                
                
            
                
	                Title: Mr
	                Name: Sameer
	                Date: 2/24/2005 1:56:45 AM
	                Comment: 
its good.