Table of contents
Introduction
Hey folks, I hope that you must have read my Day 11 Article on #30DaysOfJs. In case, if you haven't then make sure you give it a read by clicking here.
Regular Expressions
A regular expression or RegExp is a small programming language that helps to find patterns in data. A RegExp can be used to check if some pattern exists in different data types. To use RegExp in JavaScript either we use the RegExp constructor or we can declare a RegExp pattern using two forward slashes followed by a flag. We can create a pattern in two ways.
To declare a string we use a single quote, double quote a backtick to declare a regular expression we use two forward slashes and an optional flag. The flag could be g, i, m, s, u or y.
- Parameters- A regular expression takes two parameters. One required search pattern and an optional flag.
Pattern: A pattern could be a text or any form of pattern with some sort of similarity. For instance, the word spam in an email could be a pattern we are interested to look for in an email or a phone number format.
Flags: are optional parameters in a regular expression that determine the type of searching. Let us see some of the flags:
g: a global flag which means looking for a pattern in the whole text
i: case insensitive flag(it searches for both lowercase and uppercase)
m: multiline
- Creating a Pattern With RegExp Constructor-
For Example 1:
// Without flag
let pattern = 'love'
let regEx = new RegExp(pattern)
For Example 2:
// With flag
let pattern = 'love'
let flag = 'gi'
let regEx = new RegExp(pattern, flag)
Declaring a regex pattern using RegExp object. Writing the pattern and the flag inside the RegExp constructor. For example-
let regEx = new RegExp('love','gi');
- Creating a Pattern Without RegExp Constructor-
For Example 1:
// With Flag
let regEx= /love/gi
For Example 2:
// Without Flag
let regEx= new RegExp('love','gi')
- RegExpp Object Methods-
- test(): Tests for a match in a string. It returns true or false.
For Example:
const str = 'I love JavaScript'
const pattern = /love/
const result = pattern.test(str)
console.log(result)
// Output
// true
- match(): Returns an array containing all of the matches, including capturing groups, or null if no match is found. If we do not use a global flag, match() returns an array containing the pattern, index, input and group.
For Example:
const str = 'I love JavaScript'
const pattern = /love/
const result = str.match(pattern)
console.log(result)
// Output
// ["love", index: 2, input: "I love JavaScript", groups: undefined]
- search(): Tests for a match in a string. It returns the index of the match, or -1 if the search fails.
For Example:
const str = 'I love JavaScript'
const pattern = /love/g
const result = str.search(pattern)
console.log(result)
// Output --> 2
- Square Bracket-
For Example 1:
const pattern = '[Aa]pple' // this square bracket means either A or a
const txt = 'Apple and banana are fruits. An old cliche says an apple a day keeps the doctor way has been replaced by a banana a day keeps the doctor far far away. '
const matches = txt.match(pattern)
console.log(matches)
// Output
// ["Apple", index: 0, input: "Apple and banana are fruits. An old cliche says an apple a day keeps the doctor way has been replaced by a banana a day keeps the doctor far far away.", groups: undefined]
For Example 2:
const pattern = /[Aa]pple/g // This square bracket means either A or a
const txt = 'Apple and banana are fruits. An old cliche says an apple a day a doctor way has been replaced by a banana a day keeps the doctor far far away. '
const matches = txt.match(pattern)
console.log(matches)
// Output
// ["Apple", "apple"]
- Escape Character(\) in RegExp-
For Example:
const pattern = /\d/g // d is a special character which means digits
const txt = 'This regular expression example was made in January 12, 2020.'
const matches = txt. match(pattern)
console.log(matches)
// Output
// ["1", "2", "2", "0", "2", "0"], this is not what we want
- One or more times (+)-
For Example:
const pattern = /\d+/g // d is a special character which means digits
const txt = 'This regular expression example was made in January 12, 2020.'
const matches = txt. match(pattern)
console.log(matches)
// Output
// ["12", "2020"], this is not what we want
- Period(.)-
For Example:
const pattern = /[a].+/g // . any character, + any character one or more times
const txt = 'Apple and banana are fruits'
const matches = txt.match(pattern)
console.log(matches)
// Output
// ['and banana are fruits']
- Zero or One Time(?)- Zero or one time. The pattern may not occur or it may occur once.
For Example:
const txt = 'I am not sure if there is a convention how to write the word e-mail.\
Some people write it email others may write it as Email or E-mail.'
const pattern = /[Ee]-?mail/g // ? means optional
matches = txt.match(pattern)
console.log(matches)
// Output
// ["e-mail", "email", "Email", "E-mail"]
- Exact Match- It should have ^ starting and $ which is an end.
let pattern = /^[A-Z][a-z]{3,12}$/;
let name = 'Asabeneh';
let result = pattern.test(name)
console.log(result)
// Output
// true
I hope that you must have found this article quite helpful. If yes, then do give a read to some of my other articles!
Who knows you might become a great programmer ๐ค!