Skip to main content

Regular expressions

This time, I will explain the systematic use of regular expressions in Office scripts.

Definition of regular expression​

If you use regular expressions in the Office Scripts, define the regular expression literal (//) enclosed in slash or use the Regexp object.

In both cases, the same object is created, but if you want to use a variable in a regular expression or dynamically generates a regular expression based on the input from the user, it can be realized only with the Regexp object instance.

Definition sample of regular expression
/** A regular expression that only matches 2 -digit numbers */
const regexp1 = /^[0-9]{2}$/;

/** A regular expression that matches the string that starts with「value」*/
const regexp2 = new RegExp(`^value.*`);

Check the match between the regular expression and the string​

When using the method RegExp.test​

If you simply check whether the regular expression and the specified character string match, use the Regexp.test method.

Regexp.test requires a string as an argument, and returns true if it matches the regular expression.

A match check using the test method
/** A regular expression that only matches 2-digit numbers */
const regexp = /^[0-9]{2}$/;

console.log(regexp.test('23')); // true

console.log(regexp.test('2022')); // false

When using the String.search method​

The String.search method can also check the string.

String.search can pass the regular expression to the argument and return the matching index (several characters).

A match check using the Test method
/** A regular expression that matches if there are two digits in the string */
const regexp = /[0-9]{2}/;

console.log('Today is 17th'.search(regexp));

Replacement of character strings using regular expressions​

To replace the string that matches the regular expression with another string, use the regular expression for the String.replace method argument.

Replacement of character strings using the Replace method
/** "Value" at the top */
const regexp = new RegExp('^value');

const replaced = 'value-content-value'.replace(regexp, 'item'); // item-content-value

If you attach g to the end of the regular expression literal, you may look for a matching character string through the entire target character string and match multiple times.

Separation of character strings using regular expressions​

To divide the string based on a string that matches the regular expression, use the regular expression for the String.split method argument.

Separation of character strings using the split method
/** A regular expression that matches the slash */
const regexp = /\//;

const splitted = '2022/3/17'.split(regexp); // ['2022', '3', '17']