正则表达式以避免空格

时间:2013-07-23 16:05:58

标签: ruby regex

我对下面的表达式有一个问题。我正在尝试使用下面的正则表达式进行URL验证:

    ^http(s?):\/\/(\w+\.)?[\w%\-\.$,@?^=%&:\/~\+#]+\.[\w\.$,@?^=%&:\/~\+#]+|(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}+\/$

上面的表达式允许IP地址以及http/https:。它接受url之间的空格。 (http://example.com)。如何限制上面表达式中的空格?

2 个答案:

答案 0 :(得分:4)

别。这不适合使用正则表达式,并且永远不会使所有可能的URL正确。使用URI module实际解析网址,并捕获如果您向其提供无效网址时将引发的例外情况。

require 'URI'

URI("http://google.com") # => #<URI::HTTP:0x007fb08500d3a8 URL:http://google.com>
URI("http://a b") # URI::InvalidURIError: bad URI(is not URI?): http://a b

答案 1 :(得分:0)

只需将$(要求换行)添加到第一个条件中:

^http(s?):\/\/(\w+\.)?[\w%\-\.$,@?^=%&amp;:\/~\+#]+\.[\w\.$,@?^=%&amp;:\/~\+#]+$|(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}+\/$
   ------Add in $ here---------------------------------------------------------^

Example

话虽如此,在解析和验证URI时,已经有非常好的内置模块。我建议使用其中之一。