Introduction to regex
Published: 2022-11-15 21:20:07

## What do regular expressions

Regular expression is a formal method of specifying a text pattern.

>> How so?

>> A brief explanation then!

Let's have a text, this text has more than a thousand words, you want to find
a specific word and not only that, it also wants to replace it whenever it occurs.

Regular expression can do this for you, locate the words and replace them according to a conditional logic established by you.

## What are flags

Flags are markers that will determine how our regex will behave, they determine the logic of our regex, what will be filtered and what will be ignored.

Example:

- flag (g) and the global flag, with it will be searched in the whole string.
- flag(i), ignore case. Ignores uppercase and lowercase letters.

How to use the flags

```
 const text = 'Rato roeu a roupa do rei de Roma';

 const regex = /r/gi

 console.log(text.match(regex))
 ```
 output
 ```
 ['R', 'r', 'r', 'r', 'R']
 ```

In this example above the flags "***g***" and "***i***" were used. Here it searches the entire string for uppercase or lowercase letters, noted in the output.

### Checking for spaces

An example of fetching spaces with regex.

 ```
 console.log('   '.match(/\s/g))
 ```

## Single characters

```
const text = '1,2,3,4,5,6.a.b c!d?e'

const regex = /,/

console.log(text.split(regex))
```

In this example it will separate our string where there is a comma and ignoring it. This result is only possible using ***split()***.

output:

```
['1', '2', '3', '4', '5', '6.a.b c!d?e']
```

<br />

# MetaCharacters

### MetaCaracteres - Representatives

Metacharacters |Name            |Meaning
---------------|----------------|----------------------------
 .             |Point           |any one character (joker)
 []            |Set             |Allowed character set  
 [^]           |set denied      |Set of prohibited characters

<br />


### MetaCharacters - Quantifiers

Metacharacters |Name            |Meaning
---------------|----------------|----------------------------
 ?             |Optional        |zero or one
 \*            |Asterisk        |zero or more  
 \+            |Moist           |one or more
 {n, m}        |Keys            |from n to m

 <br />

### MetaCharacters - Anchors

Metacharacters |Name            |Meaning
---------------|----------------|----------------------------
 ^             |Circumflex      |Inicio da linha
 $             |Cifrao          |Fim da linha  
 \b            |Borda           |Inicio ou fim da palavra

 <br />

### Other MetaCharacters

Metacharacters |Name            |Meaning
---------------|----------------|----------------------------
 \             |Escape          |Using metacharacters with literals
 \|            |or              |Or Operation
 ()            |Group           |Defines a group
 \1...\9       |Rearview        |Rescue already defined groups

<br />

Using wildcard metacharacter:

```
const text = '1,2,3,4,,5,6,7,8,9,0'

console.logh(text.match(/1.2/g))
console.log(text.match(/1..2/g))
```

output

```
['1,2']
null
```

In this example above, it will search the entire string for a sequence that starts at "1" and ends at "2", but in the middle we have a wildcard, which means that it doesn't matter what character is there. In the second, it returns a null, because there are no two characters between 1 and 2.

### Ways to search for space in string

In this example it will look for 3 spaces between "a" and "b". Below I made several ways that lead to the same result.

```
const text = 'a   b'

console.logh(text.match(/a   b/))
console.log(text.match(/a\s\s\sb/))
console.log(text.match(/a {3}b/))
console.log(text.match(/a\s{3}b/))
console.log(text.match(/\s+b/))
```

Let's see other ways to make a regex.

Gets all letters in an A-Z range.

```
console.log(text.match(/[a-z]/g))
```

You take all letters in a range of B-D.

```
console.log(text.match(/[b-d]/g))
```

Gets all numbers in a range from 2 to 4.

```
console.log(text.match(/[2-4]/g))
```

Gets all letters and numbers in the given range

```
console.log(text.match(/[A-Z1-3]/g))
```

<br />

[![Texto alternativo da imagem](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ds4alkts3uxq0dsco0nv.png))](https://www.linkedin.com/in/israel-lopes-419a32189)