Module: Authlogic::Regex

Defined in:
lib/authlogic/regex.rb

Overview

This is a module the contains regular expressions used throughout Authlogic. The point of extracting them out into their own module is to make them easily available to you for other uses. Ex:

validates_format_of :my_email_field, :with => Authlogic::Regex.email

Class Method Summary collapse

Class Method Details

.emailObject

A general email regular expression. It allows top level domains (TLD) to be from 2 - 13 in length. The decisions behind this regular expression were made by analyzing the list of top-level domains maintained by IANA and by reading this website: www.regular-expressions.info/email.html, which is an excellent resource for regular expressions.



12
13
14
15
16
17
18
19
# File 'lib/authlogic/regex.rb', line 12

def self.email
  @email_regex ||= begin
    email_name_regex  = '[A-Z0-9_\.&%\+\-\']+'
    domain_head_regex = '(?:[A-Z0-9\-]+\.)+'
    domain_tld_regex  = '(?:[A-Z]{2,13})'
    /\A#{email_name_regex}@#{domain_head_regex}#{domain_tld_regex}\z/i
  end
end

.email_nonasciiObject

A draft regular expression for internationalized email addresses. Given that the standard may be in flux, this simply emulates @email_regex but rather than allowing specific characters for each part, it instead disallows the complement set of characters:

  • email_name_regex disallows: @[]^ !“#$()*,/:;<=>?‘{|}~\ and control characters

  • domain_head_regex disallows: _%+ and all characters in email_name_regex

  • domain_tld_regex disallows: 0123456789- and all characters in domain_head_regex

en.wikipedia.org/wiki/Email_address#Internationalization tools.ietf.org/html/rfc6530 www.unicode.org/faq/idn.html ruby-doc.org/core-2.1.5/Regexp.html#class-Regexp-label-Character+Classes en.wikipedia.org/wiki/Unicode_character_property#General_Category



32
33
34
35
36
37
38
39
# File 'lib/authlogic/regex.rb', line 32

def self.email_nonascii
  @email_nonascii_regex ||= begin
    email_name_regex  = '[^[:cntrl:][@\[\]\^ \!\"#$\(\)*,/:;<=>\?`{|}~\\\]]+'
    domain_head_regex = '(?:[^[:cntrl:][@\[\]\^ \!\"#$&\(\)*,/:;<=>\?`{|}~\\\_\.%\+\']]+\.)+'
    domain_tld_regex  = '(?:[^[:cntrl:][@\[\]\^ \!\"#$&\(\)*,/:;<=>\?`{|}~\\\_\.%\+\-\'0-9]]{2,13})'
    /\A#{email_name_regex}@#{domain_head_regex}#{domain_tld_regex}\z/
  end
end

.loginObject

A simple regular expression that only allows for letters, numbers, spaces, and .-_@. Just a standard login / username regular expression.



43
44
45
# File 'lib/authlogic/regex.rb', line 43

def self.
  /\A\w[\w\.+\-_@ ]+\z/
end