Validate URL Regular expression

Asked

Viewed 1,235 times

2

I would like to know the following, I have a regular expression to validate Urls, but I would like it to not only validate the URL, but release it if the URL is empty or empty:

I believe that was the idea, but when I run Delphi, the empty Urls and those with white spaces do not work

^[\s]*$|/(((http|ftp|https):\/{2})+(([0-9a-z_-]+\.)+(aero|asia|biz|cat|com|coop|edu|gov|info|int|jobs|mil|mobi|museum|name|net|org|pro|tel|travel|ac|ad|ae|af|ag|ai|al|am|an|ao|aq|ar|as|at|au|aw|ax|az|ba|bb|bd|be|bf|bg|bh|bi|bj|bm|bn|bo|br|bs|bt|bv|bw|by|bz|ca|cc|cd|cf|cg|ch|ci|ck|cl|cm|cn|co|cr|cu|cv|cx|cy|cz|cz|de|dj|dk|dm|do|dz|ec|ee|eg|er|es|et|eu|fi|fj|fk|fm|fo|fr|ga|gb|gd|ge|gf|gg|gh|gi|gl|gm|gn|gp|gq|gr|gs|gt|gu|gw|gy|hk|hm|hn|hr|ht|hu|id|ie|il|im|in|io|iq|ir|is|it|je|jm|jo|jp|ke|kg|kh|ki|km|kn|kp|kr|kw|ky|kz|la|lb|lc|li|lk|lr|ls|lt|lu|lv|ly|ma|mc|md|me|mg|mh|mk|ml|mn|mn|mo|mp|mr|ms|mt|mu|mv|mw|mx|my|mz|na|nc|ne|nf|ng|ni|nl|no|np|nr|nu|nz|nom|pa|pe|pf|pg|ph|pk|pl|pm|pn|pr|ps|pt|pw|py|qa|re|ra|rs|ru|rw|sa|sb|sc|sd|se|sg|sh|si|sj|sj|sk|sl|sm|sn|so|sr|st|su|sv|sy|sz|tc|td|tf|tg|th|tj|tk|tl|tm|tn|to|tp|tr|tt|tv|tw|tz|ua|ug|uk|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|ye|yt|yu|za|zm|zw|arpa)(:[0-9]+)?((\/([~0-9a-zA-Z\#\+\%@\.\/_-]+))?(\?[0-9a-zA-Z\+\%@\/&\[\];=_-]+)?)?))\b/imuS

Testing over the internet works, but when used in Delphi, it does not validate whitespace nor if the string is empty, only the URL it validates.

I wonder if this problem is in Delphi?

  • Where does the PHP, and Javascript? Remember that every language has its peculiarities in relation to expressões regulares, if an expression works in PHP, it doesn’t mean it will work in Ruby, etc.

  • So @Gerep, is that I tested on online sites that should use JS or PHP. Now you say that each language has its peculiarities, this must be one of the reasons why the empty validation does not work ' [ s]*$|' . Because in online testing, they work, when testing in Google, they didn’t work. ATT

1 answer

1

Considerations:
I see no need for such an extensive regex, in which case I would define a URL with something that starts with the http prefix or https or ftp, followed by "://www." address and end ". with", ". br", ". Gov", etc.

For cases that contain blank or empty spaces, it would use an alternate token OR after the URL expression, so if it wasn’t the default you want, it would check whether it is HTTP OR FTP OR an empty field (note that I am using the most specific character sequence before and after the most common ones, this is not by chance see here why)

So I would use that expression:

( *?https{0,1}:\/\/w{0,3}.*| *?ftp:\/\/w{0,3}.*| *?\n|^$)

You can test it here.

Browser other questions tagged

You are not signed in. Login or sign up in order to post.