ullas kunder

Designer & Developer

Learn Regular Expression

freeCodeCamp youtube video and some of my own

  • Using the Test Method

The test() method in JavaScript tests for a match in a string and returns true or false depending on whether the pattern is found or not. It can be used with the regular expression's test() method.


let myString = "Hello, world";
let myStringRegex = /hello/i;
const result = myStringRegex.test(myString);
console.log("result: ", result); // Output: true
  • Match Literal Strings

To match a literal string in a regular expression, you can simply include the string within the forward slashes / to create the regular expression pattern.


let extractString = "Hello, world, Hello6";
let extractStringRegex = /Hello/g;
const result1 = extractString.match(extractStringRegex);
console.log("result1: ", result1); // Output: ["Hello", "Hello"]
  • Match a Literal String with Different Possibilities

To match a literal string with different possibilities, you can use the | operator in the regular expression pattern.


let myString = "Hello, world";
let myStringRegex = /hello|mister/;
const result = myStringRegex.test(myString);
console.log("result: ", result); // Output: true
  • Ignore Case While Matching

To ignore the case while matching a string in a regular expression, you can use the i flag after the closing forward slash / of the regular expression pattern.


let myString = "Hello, world";
let myStringRegex = /hello/i;
const result = myStringRegex.test(myString);
console.log("result: ", result); // Output: true
  • Extract Matches

To extract matches from a string using a regular expression, you can use the match() method in JavaScript. Pass the regular expression as an argument to the match() method.


let extractString = "Hello, world, Hello6";
let extractStringRegex = /Hello/g;
const result1 = extractString.match(extractStringRegex);
console.log("result1: ", result1); // Output: ["Hello", "Hello"]
  • Find More Than the First Match

By default, the match() method in JavaScript finds only the first match. To find all occurrences of a pattern in a string, you can use the g flag in the regular expression.


let extractString = "Hello, world, Hello6";
let extractStringRegex = /Hello/g;
const result1 = extractString.match(extractStringRegex);
console.log("result1: ", result1); // Output: ["Hello", "Hello"]
  • Match Anything with Wildcard Period

The . character in a regular expression matches any single character, except for newline characters.


let extractString = "Hello, world, Hello6";
let extractStringRegex = /he./i;
const result1 = extractString.match(extractStringRegex);
console.log("result1: ", result1); // Output: ["Hel"]
  • Match Single Character with Multiple Possibilities

To match a single character with multiple possibilities, you can use square brackets [ ] in the regular expression pattern.


let extractString = "Hello, world, Hello6";
let extractStringRegex = /[aeiou]/ig;
const result1 = extractString.match(extractStringRegex);
console.log("result1: ", result1); // Output: ["e", "o", "o", "e", "o"]
  • Match Letters of the Alphabet

To match letters of the alphabet, you can use the range [a-z] in the regular expression pattern. This will match any lowercase letter from a to z.


let extractString = "Hello, world, Hello6";
let extractStringRegex = /[a-z]/ig;
const result1 = extractString.match(extractStringRegex);
console.log("result1: ", result1); // Output: ["H", "e", "l", "l", "o", "w", "o", "r", "l", "d", "e", "l", "l", "o"]
  • Match Numbers and Letters of the Alphabet

To match both numbers and letters of the alphabet, you can use the range [0-9a-z] in the regular expression pattern. This will match any digit from 0 to 9 and any lowercase letter from a to z.


let quoteString = "I will be the king of the piret 321";
let quoteStringRegex = /[0-9a-z]/ig;
let result4 = quoteString.match(quoteStringRegex);
console.log("result4: ", result4); // Output: ["I", "w", "i", "l", "l", "b", "e", "t", "h", "e", "k", "i", "n", "g", "o", "f", "t", "h", "e", "p", "i", "r", "e", "t", "3", "2", "1"]
  • Match Single Characters Not Specified

To match single characters not specified in a regular expression, you can use the [^] notation in the pattern. It matches any character that is not within the square brackets.


let extractString = "Hello, world, Hello6";
let extractStringRegex = /[^he]/ig;
const result1 = extractString.match(extractStringRegex);
console.log("result1: ", result1); // Output: [", ", ", ", "o", "l", "l", ",", " ", "o", "r", "l", "d", ",", " ", "6"]
  • Match Characters that Occur One or More Times

To match characters that occur one or more times in a row, you can use the + symbol in the regular expression pattern.


let extractString = "Hello, world, Hello6";
let extractStringRegex = /l+/g;
const result1 = extractString.match(extractStringRegex);
console.log("result1: ", result1); // Output: ["ll", "ll", "l"]
  • Match Characters that Occur Zero or More Times

To match characters that occur zero or more times, you can use the * symbol in the regular expression pattern.


let extractString = "Hello, world, Hello6";
let extractStringRegex = /he*/ig;
const result1 = extractString.match(extractStringRegex);
console.log("result1: ", result1); // Output: ["He", "H", "He"]
  • Find Characters with Lazy Matching

By default, regular expressions are greedy, which means they try to match as much as possible. To perform a lazy match and match as little as possible, you can use the ? symbol after the * or + symbol.


let string = "titanic";
let regex = /t[a-z]*i/;
const result2 = string.match(regex);
console.log("result2: ", result2); // Output: ["titani"]
  • Find One or More Criminals in a Hunt

To find one or more occurrences of a pattern, you can use the + symbol in the regular expression pattern.


let crowd = "P1P2P3P4P5P6CCCP7P8P9";
let reCriminals = /C+/;
const matchedCriminals = crowd.match(reCriminals);
console.log("matchedCriminals: ", matchedCriminals); // Output: ["CCC"]
  • Match Beginning String Patterns

To match patterns at the beginning of a string, you can use the ^ symbol in the regular expression pattern.


let extractString = "Hello, world, Hello6";
let extractStringRegex = /^He/g;
const result1 = extractString.match(extractStringRegex);
console.log("result1: ", result1); // Output: ["He"]
  • Match Ending String Patterns

To match patterns at the end of a string, you can use the $ symbol in the regular expression pattern.


let extractString = "Hello, world, Hello6";
let extractStringRegex = /o6$/g;
const result1 = extractString.match(extractStringRegex);
console.log("result1: ", result1); // Output: ["o6"]
  • Match All Letters and Numbers

To match all letters and numbers in a string, you can use the shorthand character class \w in the regular expression pattern.


let quoteString = "I will be the king of the piret 321";
let quoteStringRegex = /\w/g;
let result4 = quoteString.match(quoteStringRegex);
console.log("result4: ", result4); // Output: ["I", "w", "i", "l", "l", "b", "e", "t", "h", "e", "k", "i", "n", "g", "o", "f", "t", "h", "e", "p", "i", "r", "e", "t", "3", "2", "1"]
  • Match Everything But Letters and Numbers To match everything except letters and numbers in a string, you can use the shorthand character class \W in the regular expression pattern.

let quoteString = "I will be the king of the piret 321";
let quoteStringRegex = /\W/g;
let result4 = quoteString.match(quoteStringRegex);
console.log("result4: ", result4); // Output: [" ", " ", " ", " ", " ", " ", " ", " ", " ", " "]
  • Match All Numbers

To match all numbers in a string, you can use the shorthand character class \d in the regular expression pattern.


let quoteString = "I will be the king of the piret 321";
let quoteStringRegex = /\d/g;
let result4 = quoteString.match(quoteStringRegex);
console.log("result4: ", result4); // Output: ["3", "2", "1"]
  • Match All Non-Numbers To match all non-numbers in a string, you can use the shorthand character class \D in the regular expression pattern.

let quoteString = "I will be the king of the piret 321";
let quoteStringRegex = /\D/g;
let result4 = quoteString.match(quoteStringRegex);
console.log("result4: ", result4); // Output: ["I", " ", "w", "i", "l", "l", " ", "b", "e", " ", "t", "h", "e", " ", "k", "i", "n", "g", " ", "o", "f", " ", "t", "h", "e", " ", "p", "i", "r", "e", "t", " "]
  • Restrict Possible Usernames

To restrict possible usernames to only alphanumeric characters (letters and numbers) and underscores, you can use the regular expression pattern /\w/.


let username = "john_doe123";
let usernameRegex = /\w/;
const isValid = usernameRegex.test(username);
console.log("isValid: ", isValid); // Output: true
  • Match Whitespace

To match whitespace characters (spaces, tabs, and line breaks), you can use the shorthand character class \s in the regular expression pattern.


let text = "This is a sentence with spaces";
let textRegex = /\s/g;
const result = text.match(textRegex);
console.log("result: ", result); // Output: [" ", " ", " ", " "]
  • Match Non-Whitespace Characters

To match non-whitespace characters, you can use the shorthand character class \S in the regular expression pattern.


let text = "This is a sentence with spaces";
let textRegex = /\S/g;
const result = text.match(textRegex);
console.log("result: ", result); // Output: ["T", "h", "i", "s", "i", "s", "a", "s", "e", "n", "t", "e", "n", "c", "e", "w", "i", "t", "h", "s", "p", "a", "c", "e", "s"]
  • Specify Upper and Lower Number of Matches

To specify the upper and lower number of matches for a pattern, you can use the curly braces { } in the regular expression pattern.


let text = "Hellooo";
let textRegex = /o{2,4}/g;
const result = text.match(textRegex);
console.log("result: ", result); // Output: ["ooo"]
  • Specify Only the Lower Number of Matches

To specify only the lower number of matches for a pattern, you can use the curly braces { } with a single value in the regular expression pattern.


let text = "Hellooo";
let textRegex = /o{3,}/g;
const result = text.match(textRegex);
console.log("result: ", result); // Output: ["ooo"]
  • Specify Exact Number of Matches

To specify an exact number of matches for a pattern, you can use the curly braces { } with the same value for the lower and upper bounds in the regular expression pattern.


let text = "Hellooo";
let textRegex = /o{3}/g;
const result = text.match(textRegex);
console.log("result: ", result); // Output: ["ooo"]
  • Check for All or None

To check if a pattern occurs zero or one time, you can use the ? symbol in the regular expression pattern.


let text = "color";
let textRegex = /colou?r/;
const result = textRegex.test(text);
console.log("result: ", result); // Output: true
  • Positive and Negative Lookahead

Positive and negative lookaheads are used to look ahead in the string to see if a pattern exists or does not exist without actually consuming the characters. Positive lookahead is represented by (?=...), while negative lookahead is represented by (?!...).


let password = "P@ssw0rd";
let positiveRegex = /(?=\w{8,})(?=\D*\d)(?=[^a-z]*[a-z])/;
let negativeRegex = /(?!123456)/;
const isStrongPassword = positiveRegex.test(password) && negativeRegex.test(password);
console.log("isStrongPassword: ", isStrongPassword); // Output: true
  • Reuse Patterns Using Capture Groups

To reuse patterns using capture groups, you can use parentheses ( ) to create a capture group in the regular expression pattern. The captured value can be referenced using backreferences.


let repeatStr = "regex regex";
let repeatRegex = /(\w+)\s\1/;
const result = repeatRegex.test(repeatStr);
console.log("result: ", result); // Output: true
  • Use Capture Groups to Search and Replace

Capture groups can also be used to search and replace parts of a string using the replace() method in JavaScript. Backreferences can be used to reference the captured values in the replacement string.


let str = "Hello, world";
let regex = /(\w+), (\w+)/;
let result = str.replace(regex, "$2, $1");
console.log("result: ", result); // Output: "world, Hello"
  • Remove Whitespace from Start and End

To remove whitespace characters from the start and end of a string, you can use the trim() method in JavaScript.


let str = "   Hello, world   ";
let trimmedStr = str.trim();
console.log("trimmedStr: ", trimmedStr); // Output: "Hello, world"
  • Validate Email Addresses

To validate email addresses using a regular expression, you can use the following pattern:


let email = "example@example.com";
let emailRegex = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/;
const isValidEmail = emailRegex.test(email);
console.log("isValidEmail: ", isValidEmail); // Output: true
  • Validate URL

To validate URLs using regular expressions, you can use a pattern that checks for the correct format of a URL. Again, URL validation can be complex, but here's a basic pattern to get you started:


let url = "https://www.example.com";
let urlRegex = /^(http|https):\/\/([\w.-]+)\.([a-zA-Z]{2,})(:[0-9]+)?(\/.*)?$/;
const isValidURL = urlRegex.test(url);
console.log("isValidURL: ", isValidURL); // Output: true
  • Validate Phone Numbers

To validate phone numbers using regular expressions, you can use a pattern that checks for the correct format of a phone number. Phone number formats can vary, but here's a basic pattern to validate a common format:


let phoneNumber = "+1 (123) 456-7890";
let phoneRegex = /^\+\d{1,3}\s?\(\d{3}\)\s?\d{3}-\d{4}$/;
const isValidPhoneNumber = phoneRegex.test(phoneNumber);
console.log("isValidPhoneNumber: ", isValidPhoneNumber); // Output: true