Igo*_*r P 6 ruby regex ruby-on-rails rubocop
我的 Rails 应用程序中有一个 141 个字符长的正则表达式,但 Rubocop 不喜欢它。
我的正则表达式:
URL_REGEX = /\A(http:\/\/www\.|https:\/\/www\.|http:\/\/|https:\/\/)?[a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z]{2,5}(:[0-9]{1,5})?(\/[-\w.]+)\z/
Run Code Online (Sandbox Code Playgroud)
此模式检查网址和一级路径,例如 http(s)://example.com/path
你能安全地在 Ruby 中拆分正则表达式吗?在 Ruby 中拆分正则表达式的一般机制是什么?
您如何告诉 Rubocop 在正则表达式上放轻松?
非常感谢!
你应该尝试这样的事情:
regexp = %r{\A(http:\/\/www\.|https:\/\/www\.|http:\/\/|https:\/\/)?[a-z0-9]+
([\-\.]{1}[a-z0-9]+)*\.[a-z]{2,5}(:[0-9]{1,5})?(\/[\w.]+)\z}x
if 'http://example.com/path' =~ regexp
puts 'matches'
end
Run Code Online (Sandbox Code Playgroud)
最后的“x”是忽略模式中的空格和注释。
检查 ruby 风格指南最后一个例子https://github.com/github/rubocop-github/blob/master/STYLEGUIDE.md#regular-expressions