module Authlogic::Regex

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

Public Class Methods

email() click to toggle source

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.

# File lib/authlogic/regex.rb, line 11
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_nonascii() click to toggle source

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

# File lib/authlogic/regex.rb, line 31
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
login() click to toggle source

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

# File lib/authlogic/regex.rb, line 42
def self.login
  /\A\w[\w\.+\-_@ ]+\z/
end