[week1] Days 3 - Regex ! part 2
Published: 2022-01-05 20:56:31

![Image complete regex](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/g9w9trkh0qivi22ui8fa.png)
#Busy day !

Today was a complicated day, I managed to work on my regex course, but in a rush that didn't allow me to fully understand the lessons I was learning.

So, to test myself tomorrow, I'm going to realise a mini challenge which consists in the realisation of an application that will check if a password corresponds to the standard of a secure password. 

In advance sorry, but the rest of the article is from my personal notes, I do not have the time to edit everything.
But I will detail my creation tomorrow

##What did i learn ?


###Lazy Matching
```javascript
let text = "<h1>Winter is coming</h1>";
let myRegex = /<.*?1>/;
let result = text.match(myRegex);//h1
```

###Match Beginning String Patterns

```javascript
let rickyAndCal = "Cal and Ricky both like racing.";
let calRegex = /^Cal/; 
let result = calRegex.test(rickyAndCal);//Cal
```

###Match Ending String Patterns

```javascript
let caboose = "The last car on a train is the caboose";
let lastRegex = /caboose$/; // Change this line
let result = lastRegex.test(caboose);//True
```

###Match All Letters and Numbers

```javascript
/\w/gi 
``` used to count all alphanumeric characters  


###Character classes 
```javascript
	- \w word \d digit \s whitespace (tabs, line breaks)
	- \W NOT word \D NOT digit \S NOT whitespace
	- \t tabs, \n line breaks
	- . any character (except newline)
```
###Specify Upper and Lower Number of Matches
```javascript
let ohStr = "Ohhh no";
let ohRegex = /Oh{3,6}\sno/gi; // Change this line
let result = ohRegex.test(ohStr);//true 
```
Specify Only the Lower Number of Matches

```javascript
/ha{3,}h/
```
this will match with haaaaaaah not hah 

Specify Exact Number of Matches
/a{3}/

###Check for All or None

```javascript
let favWord = "favorite";
let favRegex = /favou?rite/; 
let result = favRegex.test(favWord) // favourite true also 
```

###Positive and Negative Lookahead

- A positive lookahead will look to make sure the element in the search pattern is there, but won't actually match it. A positive lookahead is used as (?=...) where the ... is the required part that is not matched.

- On the other hand, a negative lookahead will look to make sure the element in the search pattern is not there. A negative lookahead is used as (?!...) where the ... is the pattern that you do not want to be there. The rest of the pattern is returned if the negative lookahead part is not present.

```javascript
let sampleWord = "astronaut";
let pwRegex = /(?=\w{6})(?=\w*\d{2})/; 
let result = pwRegex.test(sampleWord); // match passwords that are greater than 5 characters long, and have two consecutive digits.
```


###Check For Mixed Grouping of Characters

```javascript
let myString = "Eleanor Roosevelt";
let myRegex = /(Franklin|Eleanor).*Roosevelt/;
let result = myRegex.test(myString);// Eleanor Roosevelt and Franklin Roosevelt both true 
```

###Reuse Patterns Using Capture Groups

```javascript
let repeatNum = "42 42 42";
let reRegex = /^(\d+)\s\1\s\1$/; 
let result = reRegex.test(repeatNum);//find the patern
```

###Remove Whitespace from Start and End

```javascript
let hello = "   Hello, World!  ";
let wsRegex = /^\s+|\s+$/g; 
let result = hello.replace(wsRegex, ""); 
```


PS:

- if you see any spelling or grammar mistakes, can you notify me (I am still improving my English) ? thank you !
- if you have any tips for improving my post feel free to comment on the post