Notes(3)
Tags: javascript, devops, tutorial, beginners
Published: 2021-05-03 23:14:26

#### Match Beginning String Patterns
* Prior posts showed that regular expressions can be used to look for a number of matches. 
* They are also used to search for patterns in specific positions in strings.
* In an earlier challenge, you used the caret character (^) inside a character set to create a negated character set in the form [^thingsThatWillNotBeMatched]. Outside of a character set, the caret is used to search for patterns at the beginning of strings.
* Ex: Let's use the caret character in a regex to find Alan only in the beginning of the string randyAndAlan.
```
let randyAndAlan = "Alan and Randy both like racing.";
let calRegex = /^Alan/;
let result = calRegex.test(randyAndAlan);

console.log(result); will display true
```


####Match Ending String Patterns
* In the above post, you learned to use the caret character to search for patterns at the beginning of strings. There is also a way to search for patterns at the end of strings.
* You can search the end of strings using the dollar sign character $ at the end of the regex.
* Ex:
```
let randyAndAlan = "Alan and Randy both like racing.";
let calRegex = /^Alan/;
let result = calRegex.test(randyAndAlan);
let noEnding = "Randy and Alan are racing across the world!"
let error = lastRegex.test(noEnding);

console.log(result); will display true
console.log(error); will display false
```


#### Match All Letters and Numbers
* Using character classes, you were able to search for all letters of the alphabet with `[a-z]`. This kind of character class is common enough that there is a shortcut for it, although it includes a few extra characters as well. The closest character class in JavaScript to match the alphabet is `\w`. This shortcut is equal to `[A-Za-z0-9_]`. This character class matches upper and lowercase letters plus numbers. Note, this character class also includes the underscore character (`_`).
* Ex: Here we usedthe shorthand character class \w to count the number of alphanumeric characters in various quotes and strings.
```
let quoteSample = "The five boxing wizards jump quickly.";
let alphabetRegexV2 = /\w/g; 
let result = quoteSample.match(alphabetRegexV2).length;

console.log(result); will display 31
```


#### Match Everything But Letters and Numbers
* You've learned that you can use a shortcut to match alphanumerics `[A-Za-z0-9_]` using `\w`. A natural pattern you might want to search for is the opposite of alphanumerics.
* You can search for the opposite of the `\w` with `\W`. Note, the opposite pattern uses a capital letter. This shortcut is the same as `[^A-Za-z0-9_]`.
* Ex:
```
let quoteSample = "The five boxing wizards jump quickly.";
let nonAlphabetRegex = /\W/g; 
let result = quoteSample.match(nonAlphabetRegex).length;

console.log(result); will display 6
```
If you really wanted to see what it shows simply take out `.length`
```
let quoteSample = "The five boxing wizards jump quickly.";
let nonAlphabetRegex = /\W/g; 
let result = quoteSample.match(nonAlphabetRegex);

console.log(result); will display
[ ' ', ' ', ' ', ' ', ' ', '.' ] 
```
* Note: spaces count


#### Match All Numbers
* You've learned shortcuts for common string patterns like alphanumerics. Another common pattern is looking for just digits or numbers.
* The shortcut to look for digit characters is `\d`, with a lowercase `d`. This is equal to the character class `[0-9]`, which looks for a single character of any number between zero and nine.
* Ex: Here we use the shorthand character class `\d` to count how many digits are in movie titles. Written out numbers ("six" instead of 6) do not count.
```
let movieName = "2001: A Space Odyssey";
let numRegex = /\d/g;
let result = movieName.match(numRegex).length

console.log(result); will display 4
```
#### Match All Non-Numbers
* The shortcut to look for non-digit characters is `\D`. This is equal to the character class `[^0-9]`, which looks for a single character that is not a number between zero and nine.
* Ex: Here we use the shorthand character class for non-digits `\D` to count how many non-digits are in movie titles.
```
let movieName = "2001: A Space Odyssey";
let noNumRegex = /\D/g;
let result = movieName.match(noNumRegex).length;

console.log(result); will display 17
```