Regular expressions allow you to find patterns in character combinations in a string. It's super powerful and are used in modern search engines and word processors.
There are three types of REGEX Function in Stackby. They are REGEX_MATCH(), REGEX_EXTRACT(), and REGEX_REPLACE(). All this are formula which has advantages and disadvantages depending on the formula output
In this article, we will learn the following Regular expression functions:
REGEX_MATCH()
REGEX_EXTRACT()
REGEX_REPLACE()
1. REGEX_MATCH
The REGEX_MATCH() function returns whether the input text matches a regular expression and outputs in the Boolean data type as a 1 as true or 0 as false result.
Example: Phone number validation and Email validation.
Phone No.: REGEX_MATCH( {Phone}, ‘^([+]?[0-9]( |-)?)?(\\(?[0-9]{3}\\)?|[0-9]{3})( |-)?([0-9]{3}( |-)?[0-9]{4}|[a-zA-Z0-9]{7})$‘)
Email: REGEX_MATCH({Email}, “(\\W|^)[\\w.\\-]{0,25}@[A-Za-z0-9.-]+\\.[A-Za-z]{2,}(\\W|$)“)

2. REGEX_EXTRACT()
In the REGEX_EXTRACT() function it returns the first substring that matches a regular expression. If the REGEX_EXTRACT() function finds no matching instance of the provided regular expression it will return an ERROR.
Example: Extracting ID from a URL
Formula: REGEX_EXTRACT({URL}, “[^=]+$“)

Another example: Domain Extraction from a URL
Formula:
REGEX_EXTRACT( {URL}, ‘^(?:https?:\\/\\/)?(?:[^@\n]+@)?(?:www\\.)?([^:\\/\n?]+)’)

3. REGEX_REPLACE()
The REGEX_REPLACE() function substitutes all matching substrings with a replacement string value.
Let’s see if we have to normalize all our phone numbers in the table, we will follow the steps below:
We’ll first check if we have a valid phone number with REGEX_MATCH, then we can use REGEX_REPLACE to bring an output for a normalized phone number.
First use REGEX_MATCH: REGEX_MATCH( {Phone}, ‘^([+]?[0-9]( |-)?)?(\\(?[0-9]{3}\\)?|[0-9]{3})( |-)?([0-9]{3}( |-)?[0-9]{4}|[a-zA-Z0-9]{7})$‘)
Then use REGEX_REPLACE to normalize: IF({REGEX MATCH}, UPPER(REGEX_REPLACE( {Phone}, ‘[^A-Za-z0-9]‘, ‘’)), ERROR(‘Invalid phone number’))
