Skip to content
Snippets Groups Projects
Select Git revision
  • move-gl-dropdown
  • improve-table-pagination-spec
  • move-markdown-preview
  • winh-fix-merge-request-spec
  • master default
  • index-namespaces-lower-name
  • winh-single-karma-test
  • 10-3-stable
  • 36782-replace-team-user-role-with-add_role-user-in-specs
  • winh-modal-internal-state
  • tz-ide-file-icons
  • 38869-milestone-select
  • update-autodevops-template
  • jivl-activate-repo-cookie-preferences
  • qa-add-deploy-key
  • docs-move-article-ldap
  • 40780-choose-file
  • 22643-manual-job-page
  • refactor-cluster-show-page-conservative
  • dm-sidekiq-versioning
  • v10.4.0.pre
  • v10.3.0
  • v10.3.0-rc5
  • v10.3.0-rc4
  • v10.3.0-rc3
  • v10.3.0-rc2
  • v10.2.5
  • v10.3.0-rc1
  • v10.0.7
  • v10.1.5
  • v10.2.4
  • v10.2.3
  • v10.2.2
  • v10.2.1
  • v10.3.0.pre
  • v10.2.0
  • v10.2.0-rc4
  • v10.2.0-rc3
  • v10.1.4
  • v10.2.0-rc2
40 results

regex.rb

Blame
  • Forked from GitLab.org / GitLab FOSS
    37155 commits behind the upstream repository.
    regex.rb 2.26 KiB
    module Gitlab
      module Regex
        extend self
    
        NAMESPACE_REGEX_STR = '(?:[a-zA-Z0-9_\.][a-zA-Z0-9_\-\.]*[a-zA-Z0-9_\-]|[a-zA-Z0-9_])'.freeze
    
        def namespace_regex
          @namespace_regex ||= /\A#{NAMESPACE_REGEX_STR}\z/.freeze
        end
    
        def namespace_regex_message
          "can contain only letters, digits, '_', '-' and '.'. " \
          "Cannot start with '-' or end in '.'." \
        end
    
    
        def namespace_name_regex
          @namespace_name_regex ||= /\A[a-zA-Z0-9_\-\. ]*\z/.freeze
        end
    
        def namespace_name_regex_message
          "can contain only letters, digits, '_', '-', '.' and space."
        end
    
    
        def project_name_regex
          @project_name_regex ||= /\A[a-zA-Z0-9_.][a-zA-Z0-9_\-\. ]*\z/.freeze
        end
    
        def project_name_regex_message
          "can contain only letters, digits, '_', '-', '.' and space. " \
          "It must start with letter, digit or '_'."
        end
    
    
        def project_path_regex
          @project_path_regex ||= /\A[a-zA-Z0-9_.][a-zA-Z0-9_\-\.]*(?<!\.git)\z/.freeze
        end
    
        def project_path_regex_message
          "can contain only letters, digits, '_', '-' and '.'. " \
          "Cannot start with '-' or end in '.git'" \
        end
    
    
        def file_name_regex
          @file_name_regex ||= /\A[a-zA-Z0-9_\-\.]*\z/.freeze
        end
    
        def file_name_regex_message
          "can contain only letters, digits, '_', '-' and '.'. "
        end
    
    
        def archive_formats_regex
          #                           |zip|tar|    tar.gz    |         tar.bz2         |
          @archive_formats_regex ||= /(zip|tar|tar\.gz|tgz|gz|tar\.bz2|tbz|tbz2|tb2|bz2)/.freeze
        end
    
        def git_reference_regex
          # Valid git ref regex, see:
          # https://www.kernel.org/pub/software/scm/git/docs/git-check-ref-format.html
    
          @git_reference_regex ||= %r{
            (?!
               (?# doesn't begins with)
               \/|                    (?# rule #6)
               (?# doesn't contain)
               .*(?:
                  [\/.]\.|            (?# rule #1,3)
                  \/\/|               (?# rule #6)
                  @\{|                (?# rule #8)
                  \\                  (?# rule #9)
               )
            )
            [^\000-\040\177~^:?*\[]+  (?# rule #4-5)
            (?# doesn't end with)
            (?<!\.lock)               (?# rule #1)
            (?<![\/.])                (?# rule #6-7)
          }x.freeze
        end
      end
    end