Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save topcowmoo/b6358c0682ffcc7e57ad5f646da55201 to your computer and use it in GitHub Desktop.
Save topcowmoo/b6358c0682ffcc7e57ad5f646da55201 to your computer and use it in GitHub Desktop.
Email Address Validation Using Regular Expressions

Email Address Validation Using Regular Expressions

Welcome to my tutorial on email address validation using regular expressions. Email validation is crucial in web development to ensure that user input conforms to the correct email format, preventing security vulnerabilities and data integrity issues.

Summary

In this tutorial, I'll be discussing a regular expression for validating email addresses. The regex pattern checks for the presence of necessary components like the username, domain, and top-level domain, while ensuring the correct structure of the email address. I'll explain each component of the regex pattern and provide examples to illustrate how it works. Here's the code snippet of the regex:

/^([a-z0-9_.-]+)@([\da-z.-]+).([a-z.]{2,6})$/

Example of Valid Email Address: "john.doe@example.com" Explanation: This email address contains a valid username ("john.doe"), domain ("example"), and top-level domain ("com").

Example of Invalid Email Address:"invalid_email@domain" Explanation: This email address is missing the top-level domain, making it invalid according to the regex pattern.

Please visit Regular-Expressions.info for everything regular expressions and tutorials.

Table of Contents

Regex Components

Anchors

Anchors specify the position of a pattern in the input string. In this email regex, two anchors are utilized: the caret (^) signifies the beginning of the string, and the dollar sign ($) signifies the end of the string.

/^([a-z0-9_.-]+)@([\da-z.-]+).([a-z.]{2,6})$/

When the anchors are combined (^ at the beginning and $ at the end), they ensure that the entire string is checked against the specified pattern, from start to finish. In other words, the pattern must match the entire email address string, not just a part of it.

Quantifiers

A quantifier specifies how many instances of a character, group, or character class should be matched. Quantifiers can be used to match a specific number of occurrences, a range of occurrences, or to indicate that something can be repeated zero or more times.

You will find two quanitifers in our regex

/^([a-z0-9_.-]+)@([\da-z.-]+).([a-z.]{2,6})$/

The plus sign + is a quantifier that matches one or more occurrences of the preceding character or group. For example, [a-z0-9_.-]+ matches one or more lowercase letters, digits, underscores, dots, or hyphens.

{2,6}: The curly braces with the range 2,6 specify the minimum and maximum number of occurrences of the preceding character or group. In this case, [a-z.]{2,6} matches between 2 and 6 occurrences of lowercase letters or dots.

Character Classes

A character class is a set of characters enclosed within square brackets. It specifies the characters that will successfully match a single character from a given input string. There are two character classes in our email regex:

  1. [a-z0-9_.-]: This character class matches any character that is a lowercase letter (a-z), a digit (0-9), an underscore (_), a period (.), or a hyphen (-). It's used to match characters in the local part of the email address before the @ symbol.

  2. [\da-z.-]: This character class matches any character that is a digit (\d), a lowercase letter (a-z), a period (.), or a hyphen (-). It's used to match characters in the domain part of the email address after the @ symbol.

Grouping and Capturing

Capturing groups are a way to treat multiple characters as a single unit. They are created by placing the characters to be grouped inside a set of parentheses. Our regex contains three groups.

Group 1: ([a-z0-9_.-]+)

This group captures the local part of the email address before the @ symbol. It consists of lowercase letters (a-z), digits (0-9), underscores (_), periods (.), and hyphens (-). The + quantifier indicates that one or more characters from this character class should be captured.

Group 2: ([\da-z.-]+)

This group captures the domain name part of the email address, excluding the top-level domain (TLD). It consists of digits (\d), lowercase letters (a-z), periods (.), and hyphens (-). The + quantifier indicates that one or more characters from this character class should be captured.

Group 3: ([a-z.]{2,6})

This group captures the top-level domain (TLD) of the email address. It consists of lowercase letters (a-z) and periods (.). The {2,6} quantifier specifies that the TLD should contain between 2 and 6 characters.

Bracket Expressions

Bracket Expressions are used to define character classes. Let's break down the bracket expressions used in our regex

/^([a-z0-9_.-]+)@([\da-z.-]+).([a-z.]{2,6})$/

[a-z0-9_.-]: this character class matches any lowercase letter (a-z), digit (0-9), underscore (_), dot (.), or hyphen (-).

[\da-z.-]: This character class matches any digit (\d), lowercase letter (a-z), dot (.), or hyphen (-).

[a-z.]: This character class matches any lowercase letter (a-z) or dot (.).

These character classes specify which characters are allowed to appear in the corresponding parts of the email address pattern defined by the regex.

Boundaries

A boundary in regular expressions is a position between characters, rather than a character itself. It's a concept used to define specific conditions for where a pattern can match within a string. The ^ and $ symbols denote boundaries in our regex by defining conditions that must be met before or after the pattern can match.

Author

Salvatore Mammoliti | A quickdraw and pull shark in the world of coding | github | mammoliti.sam@gmail.com

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment