# Groups of characters in regular expressions in JavaScript

There are special commands that allow you to select entire groups of characters at once. The command `\d` denotes a digit from `0` to `9`. The `\w` command denotes a digit, Latin letter, or underscore. The `\s` command denotes a space or space character: space, newline, tab. You can invert the meaning of the command by writing a capital letter: for example, if `\d` is a digit, then `\D` is non-digit.

## Example

Let's find all the digits:

`let str = '1 12 123'; let res = str.replace(/\d/g, '!');`

As a result, the following will be written to the variable:

`'! !! !!!'`

## Example

The repetition operators treat the group commands as a single unit, i.e. grouping parentheses are not needed. In the following example, the search pattern looks like this: digit from `0` to `9` one or more times:

`let str = '1 12 123 abc @@@'; let res = str.replace(/\d+/g, '!');`

As a result, the following will be written to the variable:

`'! ! ! abc @@@'`

## Example

In the following example, the search pattern looks like this: anything one or more times, but not a digit from `0` to 9:

`let str = '123abc3@@'; let res = str.replace(/\D+/g, '!');`

As a result, the following will be written to the variable:

`'123!3!'`

## Example

In this example, the search pattern looks like this: space character once:

`let str = '1 12 123 abc @@@'; let res = str.replace(/\s/g, '!');`

As a result, the following will be written to the variable:

`'1!12!123!abc!@@@'`

## Example

In this example, the search pattern looks like this: NON-space one or more times. All substrings separated by spaces will be replaced with `'!'`:

`let str = '1 12 123 abc @@@'; let res = str.replace(/\S+/g, '!');`

As a result, the following will be written to the variable:

`'! ! ! ! !'`

## Example

In this example, the search pattern looks like this: digit or letter one or more times . All substrings consisting of digits and letters will be replaced with `'!'`:

`let str = '1 12 123a Abc @@@'; let res = str.replace(/\w+/g, '!');`

As a result, the following will be written to the variable:

`'! ! ! ! @@@'`

## Example

In this example, the search pattern looks like this: NON-digit and NON-letter one or more times. In our case, `'@@@'` and all spaces fall under this definition (after all, they are neither digits nor letters.). Please note that at the end there is one `'!'` - the string `' @@@'` with a space in front was converted into it:

`let str = '1 12 123 Abc @@@'; let res = str.replace(/\W+/g, '!');`

As a result, the following will be written to the variable:

`'1!12!123!Abc!'`

## Practical tasks

Given a string:

`let str = 'a1a a2a a3a a4a a5a aba aca';`

Write a regex that finds strings with the letters `'a'` at the edges and one digit between them.

Given a string:

`let str = 'a1a a22a a333a a4444a a55555a aba aca';`

Write a regex that finds strings with the letters `'a'` at the edges and any number of digits between them.

Given a string:

`let str = 'aa a1a a22a a333a a4444a a55555a aba aca';`

Write a regex that will find strings with the letters `'a'` at the edges, and any number of digits between them (including zero digits, that is, the string `'aa'`).

Given a string:

`let str = 'avb a1b a2b a3b a4b a5b abb acb';`

Write a regex that finds strings of the following form: the letters `'a'` and `'b'` are at the edges, and non-digit and non-space⁅/r] between them.

Given a string:

`let str = 'ave a#b a2b a$b a4b a5b a-b acb';`

Write a regex that finds strings of the following form: the letters `'a'` and `'b'` are at the edges, and non-letter, non-digit, non-space between them.

Given a string:

`let str = 'ave a#a a2a a$a a4a a5a a-a aca';`

Write a regex that will replace all spaces with `'!'`.

←→
↑
en ru