<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Madhushree Kunder</title>
    <description>The latest articles on DEV Community by Madhushree Kunder (@madhushreekunder).</description>
    <link>https://dev.to/madhushreekunder</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F636899%2F98aac979-80a9-4487-99da-33a39d34a09a.png</url>
      <title>DEV Community: Madhushree Kunder</title>
      <link>https://dev.to/madhushreekunder</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/madhushreekunder"/>
    <language>en</language>
    <item>
      <title>Regular Expressions</title>
      <dc:creator>Madhushree Kunder</dc:creator>
      <pubDate>Sun, 06 Feb 2022 20:26:54 +0000</pubDate>
      <link>https://dev.to/madhushreekunder/regular-expressions-219o</link>
      <guid>https://dev.to/madhushreekunder/regular-expressions-219o</guid>
      <description>&lt;p&gt;Regular Expressions come in handy many times, be it for checking valid Email Id or for matching URLs. This blog comes with a &lt;a href="https://madhushree-kunder.notion.site/5af80448d1784665a28b7e92d25e7dd6?v=e7ba5207ffa4428a925d6d6a385dc106" rel="noopener noreferrer"&gt;cheat sheet&lt;/a&gt; to understand regex.&lt;/p&gt;

&lt;h1&gt;
  
  
  Setup
&lt;/h1&gt;

&lt;ol&gt;
&lt;li&gt;Open your favourite code editor and open the search tool.&lt;/li&gt;
&lt;li&gt;Now turn on the &lt;code&gt;.*&lt;/code&gt;(regex) and &lt;code&gt;Aa&lt;/code&gt;(match case) Like this: &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ftjag2ohvagl8lexmfk4k.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ftjag2ohvagl8lexmfk4k.jpeg" alt="search tool bar.jpg" width="787" height="97"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Literal Characters
&lt;/h1&gt;

&lt;p&gt;So first let's search for literal characters.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F90hubd7y919tiodimrhq.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F90hubd7y919tiodimrhq.jpeg" alt="literal char.jpg" width="800" height="124"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Only the lowercase &lt;code&gt;abc&lt;/code&gt; gets matched here and not the uppercase ones. This is because the match case is on. In the image below, you can see that it only matches uppercase ABC.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fnw0vspvie1q06d4go9fr.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fnw0vspvie1q06d4go9fr.jpeg" alt="caps ABC.jpg" width="797" height="133"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The order in which we write these characters is also important e.g. if we type &lt;code&gt;bac&lt;/code&gt; it doesn't match &lt;code&gt;abc&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fy458dr6zsryfqi7yrxvt.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fy458dr6zsryfqi7yrxvt.jpeg" alt="bac.jpg" width="800" height="110"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Meta Characters
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fq5x9aannnwq0nxbrrl7r.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fq5x9aannnwq0nxbrrl7r.jpeg" alt="meta characters.jpg" width="800" height="246"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The highlighted characters are known as metacharacters and they need to be escaped.&lt;/p&gt;

&lt;h2&gt;
  
  
  Literal . (dot) and \ (backslash)
&lt;/h2&gt;

&lt;p&gt;So what happens when we simply type the special character itself, without escaping it? Let's see :&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F91g9b5idvr5wg55f4ot6.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F91g9b5idvr5wg55f4ot6.jpeg" alt="all characters.jpg" width="799" height="364"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;(The search toolbar is on the top left corner with &lt;code&gt;.&lt;/code&gt; in its search box.)&lt;/em&gt; It matches with every character in the text area, and that is because the dot &lt;code&gt;.&lt;/code&gt; is a special character in regular expressions. To search for a literal dot &lt;code&gt;.&lt;/code&gt;, we need to escape it with a backslash &lt;code&gt;\&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ff6mob09dmw7dakrxw8vu.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ff6mob09dmw7dakrxw8vu.jpeg" alt="literal dot.jpg" width="799" height="322"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;So we have learnt that to match special characters, we need to escape them with a backslash &lt;code&gt;\&lt;/code&gt;. Special characters include: &lt;code&gt;.[{()\^$|?*+&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Now let us write a very simple regex to match the literal URL neog.camp, so according to the above statement, the &lt;code&gt;.&lt;/code&gt; needs to be escaped.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fzh2i6yisawzjhh67vgat.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fzh2i6yisawzjhh67vgat.jpeg" alt="neog.camp.jpg" width="800" height="75"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;What we have done here is simply typed the URL itself (and escaped the special character), but in real-world scenarios, we could be writing regular expressions to search for patterns. For that case, we need to write a more generic regular expression which will include using some meta-characters.&lt;/p&gt;

&lt;p&gt;Let us take a look at the table below:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Frnjckvrrfnadg8eo9b5o.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Frnjckvrrfnadg8eo9b5o.jpeg" alt="1-1.jpg" width="800" height="437"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The &lt;code&gt;.&lt;/code&gt; matches all the characters except a new line as we saw here: &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fna6ujp4iuis82t5v59s2.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fna6ujp4iuis82t5v59s2.jpeg" alt="all characters.jpg" width="799" height="364"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;code&gt;\d&lt;/code&gt; matches with all the digits from 0-9.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fviugpngye6i9tde9ct6u.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fviugpngye6i9tde9ct6u.jpeg" alt="digits.jpg" width="800" height="571"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;code&gt;\D&lt;/code&gt; matches with everything that is not a digit (0-9).&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fncv4ixj13fsd08sdhrxa.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fncv4ixj13fsd08sdhrxa.jpeg" alt="not a digit.jpg" width="800" height="583"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;When we search with a &lt;code&gt;\&lt;/code&gt; along with an uppercase letter, it does the opposite of what the lower case letter search does.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;code&gt;\w&lt;/code&gt; matches with all the word characters along with underscore. ( a-z, A-Z, 0-9, _ )&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F1tr09qb5gyikpsm7152f.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F1tr09qb5gyikpsm7152f.jpeg" alt="word character.jpg" width="800" height="508"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;code&gt;\W&lt;/code&gt; matches with non-word characters like spaces, punctuation marks and meta characters.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fkf8afqxzkh9n2vk6eqxq.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fkf8afqxzkh9n2vk6eqxq.jpeg" alt="Not word character.jpg" width="800" height="503"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;code&gt;\s&lt;/code&gt; matches with whitespace, ie. (space, tab, newline)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F22b9dgzhvpkuk8fita5c.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F22b9dgzhvpkuk8fita5c.jpeg" alt="white space all.jpg" width="800" height="362"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;code&gt;\S&lt;/code&gt; matches with everything that is not whitespace.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F7eie3v5hhbkdqnkiwilg.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F7eie3v5hhbkdqnkiwilg.jpeg" alt="not whitespace.jpg" width="800" height="499"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Anchors
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ffoq6sxhwraieswwgvxj3.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ffoq6sxhwraieswwgvxj3.jpeg" alt="anchors.jpg" width="800" height="270"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Anchors don't match any characters, but rather they match invisible positions before and after characters.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;code&gt;\b&lt;/code&gt; word boundary &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ft60hist1xkluqv8n2zsn.jpeg" alt="word boundary.jpg" width="800" height="235"&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;We have searched for word boundary &lt;code&gt;\b&lt;/code&gt; with &lt;strong&gt;to&lt;/strong&gt;. The &lt;strong&gt;'to'&lt;/strong&gt; in tokyo got matched because there is a word boundary there at the start of the line. For the second &lt;strong&gt;'to'&lt;/strong&gt; the space before the word acts as a word boundary. The last 'to' in kyoto does not get matched because there is no word boundary before it.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F85hnc3jqvj3oy34tpfwy.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F85hnc3jqvj3oy34tpfwy.jpeg" alt="to no word boundary.jpg" width="800" height="207"&gt;&lt;/a&gt;In the image above, we have removed the word boundary and simply searched for &lt;strong&gt;'to'&lt;/strong&gt; due to which all 3 to's match.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;code&gt;\B&lt;/code&gt; no word boundary&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fkujo9zsxe1nhjqa17x3n.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fkujo9zsxe1nhjqa17x3n.jpeg" alt="no word bndry.jpg" width="800" height="77"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;\B&lt;/code&gt; matches when there is no word boundary. So, the &lt;strong&gt;'to'&lt;/strong&gt; in kyoto gets matched as it has no word boundary before it.&lt;/p&gt;

&lt;p&gt;Let's try wrapping &lt;strong&gt;'to'&lt;/strong&gt; in a word boundary(&lt;code&gt;\bto\b&lt;/code&gt;). Guess what will be the output before reading ahead!&lt;/p&gt;

&lt;p&gt;🥁🥁🥁&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F1vdylu9fwpn8b7lcebpl.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F1vdylu9fwpn8b7lcebpl.jpeg" alt="b to b.jpg" width="800" height="59"&gt;&lt;/a&gt;Only the middle to gets matched because it has word boundary before and after it as well.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;code&gt;^&lt;/code&gt; The caret symbol &lt;code&gt;^&lt;/code&gt; matches the position at the beginning of a string. Like:&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fjf8ajjzi68ack48xz1pb.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fjf8ajjzi68ack48xz1pb.jpeg" alt="string char.jpg" width="799" height="92"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;code&gt;$&lt;/code&gt; The dollar symbol matches the position at the end of the string.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fw74r3dgytk8j5sjvxnjz.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fw74r3dgytk8j5sjvxnjz.jpeg" alt="end at the string.jpg" width="800" height="89"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now let us see some practical examples. We will start by writing some regular expressions for matching some Indian as well as international phone numbers.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;For phone numbers, we can't type in a literal search as we did before because all the numbers are different. They have a similar pattern but they all have different digits. So in this case we need to use metacharacters instead of literal characters.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Example-
&lt;/h3&gt;

&lt;p&gt;&lt;em&gt;International Phone Numbers:&lt;/em&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt; 123-234-9809 &amp;amp; 321.546.9930

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;We have a pattern here of &lt;code&gt;3 digits&lt;/code&gt;, and then a &lt;code&gt;-&lt;/code&gt; (dash) or a &lt;code&gt;.&lt;/code&gt; (period) followed by 3 more digits and then a &lt;code&gt;-&lt;/code&gt; (dash) or a &lt;code&gt;.&lt;/code&gt; (period) and then 4 digits at the end.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;In the &lt;a href="https://www.notion.so/5af80448d1784665a28b7e92d25e7dd6?v=e7ba5207ffa4428a925d6d6a385dc106" rel="noopener noreferrer"&gt;cheat sheet&lt;/a&gt; we can see that we can match a digit using &lt;code&gt;\d&lt;/code&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fo8xspo26f68y4q1oookg.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fo8xspo26f68y4q1oookg.jpeg" alt="digit1.jpg" width="800" height="505"&gt;&lt;/a&gt;&lt;code&gt;\d&lt;/code&gt; matches all of the digits as we can see in the image above.&lt;/p&gt;

&lt;p&gt;Now let's start by typing &lt;code&gt;\d&lt;/code&gt; thrice which will match any 3 digits in a row.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ffy7bz7kpsronewzgoi0z.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ffy7bz7kpsronewzgoi0z.jpeg" alt="3 digits.jpg" width="787" height="311"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After matching the first 3 digits, we now need to match the &lt;code&gt;-&lt;/code&gt; dash and &lt;code&gt;.&lt;/code&gt; in the pattern. For now, let's match any character in the position followed by the first 3 digits. Guess what should we type in to match any character 🤔?? Yep, as we have already learnt, it is a &lt;code&gt;.&lt;/code&gt; (period/dot).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F0nimhtu61t5rt1jpuer5.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F0nimhtu61t5rt1jpuer5.jpeg" alt="ph no. dash dot.jpg" width="722" height="320"&gt;&lt;/a&gt;Now let us add the next 3 digits, and it should be simple.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fpcmchdizj5g6kqetvlsh.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fpcmchdizj5g6kqetvlsh.jpeg" alt="ph no. 2nd batch.jpg" width="787" height="336"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We have matched the first 6 digits and the 1st separator (&lt;code&gt;.&lt;/code&gt;/&lt;code&gt;-&lt;/code&gt;) in the phone number series, now we need to match the remaining 4 digits and the 2nd separator(&lt;code&gt;.&lt;/code&gt;/&lt;code&gt;-&lt;/code&gt;).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F6nbnvqo80bkzo2ezij3o.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F6nbnvqo80bkzo2ezij3o.jpeg" alt="complete phone number.jpg" width="706" height="323"&gt;&lt;/a&gt;As we can see the regular expression matches all 4 of our phone numbers.&lt;br&gt;&lt;br&gt;
Let's take a look at a more realistic example: &lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fv9v6pyc1qn213yc9y7po.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fv9v6pyc1qn213yc9y7po.jpeg" alt="ph no. db.jpg" width="800" height="522"&gt;&lt;/a&gt; Here we can see how the regex we wrote comes in handy while searching for phone numbers in a database of information instead of a literal search.&lt;br&gt;&lt;br&gt;
 Now let's be a bit more specific about the separator. Currently, our regex matches with any separator even &lt;code&gt;*&lt;/code&gt; or anything else. But the numbers with such separators are not valid, so we need to rewrite our regex. As you can see in the image below:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fwoz2ackxml81jkgc8fmm.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fwoz2ackxml81jkgc8fmm.jpeg" alt="ph no. hash.jpg" width="800" height="159"&gt;&lt;/a&gt; To only match a &lt;code&gt;-&lt;/code&gt; dash or a &lt;code&gt;.&lt;/code&gt; dot, we need to use a &lt;code&gt;[]&lt;/code&gt; character set. And inside the character set add the characters which are required. In our case, it is obvious that &lt;code&gt;-&lt;/code&gt; and &lt;code&gt;.&lt;/code&gt; will be added.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F05c723j2tf3yltiu3k9k.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F05c723j2tf3yltiu3k9k.jpeg" alt="ph no. only dash dot.jpg" width="799" height="177"&gt;&lt;/a&gt;Now that we replaced &lt;code&gt;.&lt;/code&gt; with &lt;code&gt;[-.]&lt;/code&gt; the regular expression matches only the first two phone numbers.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Inside the character set, you don't need to escape the &lt;code&gt;.&lt;/code&gt; character.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Let's say we want to match phone numbers starting with 800 or 900, then our regular expression will change as follows:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fc1o9sf4c1zz3jd5diy6y.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fc1o9sf4c1zz3jd5diy6y.jpeg" alt="ph no. 8 or 9.jpg" width="799" height="246"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;By now we know that &lt;code&gt;\d&lt;/code&gt; matches with every digit from 0-9. What if we need to match digits only in a particular range, say 2 to 8? For that, we can use a &lt;code&gt;[]&lt;/code&gt; (character set). Instead of trying to match &lt;code&gt;[2345678]&lt;/code&gt;, we can write &lt;code&gt;[2-8]&lt;/code&gt; and it will match all digits between 2 and 8 (2 and 8 included).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F9kekq8parf60xko0gu8u.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F9kekq8parf60xko0gu8u.png" alt="range of numbers.png" width="800" height="264"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Like digits, the same could be done for alphabets. Say if you want to match only lower case alphabets from 'a' to 'z' you can write &lt;code&gt;[a-z]&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ftik1vl3v1ujyim84e5p8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ftik1vl3v1ujyim84e5p8.png" alt="range of alphabets.png" width="800" height="415"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In the above example, the uppercase alphabets don't get matched. To match both lower and uppercase, we can simply add the uppercase range, i.e &lt;code&gt;[a-zA-Z]&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fvt6p5p1bnu9bi0t1r3ap.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fvt6p5p1bnu9bi0t1r3ap.png" alt="lower and uppercase.png" width="800" height="286"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To match more characters for e.g. digits, we can write &lt;code&gt;[a-zA-Z0-9]&lt;/code&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  ^ inside []
&lt;/h2&gt;

&lt;p&gt;We know that outside of the character set &lt;code&gt;[]&lt;/code&gt;, &lt;code&gt;^&lt;/code&gt; matches the beginning of a string. But, within the character set, it negates the set and matches everything that is not in the set.&lt;/p&gt;

&lt;p&gt;Let us look at an example. Say we want to match every character except lower case a-z, then we can write it inside the &lt;code&gt;[]&lt;/code&gt; like &lt;code&gt;[^a-z]&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Frti0egvlgptzal3xpntk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Frti0egvlgptzal3xpntk.png" alt="image.png" width="800" height="278"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We can see that here it matches everything that is not a lowercase letter.&lt;/p&gt;

&lt;p&gt;Another example would be; say we want to match the words that end with 'at' except the word bat. So we can do this by putting b inside the character set, &lt;code&gt;[]&lt;/code&gt; preceded by &lt;code&gt;^&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F0or675xcz22f6dr536zb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F0or675xcz22f6dr536zb.png" alt="image.png" width="800" height="218"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h1&gt;
  
  
  Quantifiers
&lt;/h1&gt;
&lt;h2&gt;
  
  
  &lt;code&gt;{ }&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Feb88p0ng7gjlm0620wnq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Feb88p0ng7gjlm0620wnq.png" alt="image.png" width="560" height="267"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Let's take the previous example again. The one with the phone numbers. To match the phone numbers we can write, &lt;code&gt;\d\d\d.\d\d\d.\d\d\d\d&lt;/code&gt; (&lt;code&gt;\d&lt;/code&gt; is for matching digit and &lt;code&gt;.&lt;/code&gt; for matching any separator.)&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fr6qt72kcy6sh4fu7i8p9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fr6qt72kcy6sh4fu7i8p9.png" alt="image.png" width="800" height="205"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Notice how we are repeating &lt;code&gt;\d&lt;/code&gt;, instead, we can use quantifiers. So to match digits, we write: &lt;code&gt;\d{3}.\d{3}.\d{4}&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F57bic36qxrvp7yki5gne.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F57bic36qxrvp7yki5gne.png" alt="image.png" width="799" height="217"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Much cleaner, isn't it? What the &lt;code&gt;{3}&lt;/code&gt; does is, it matches exactly 3 (digits in our case). Here we are matching exact numbers, but sometimes we don't know the exact number and we may need to use one of these &lt;code&gt;* + ?&lt;/code&gt; quantifiers.&lt;/p&gt;
&lt;h2&gt;
  
  
  &lt;code&gt;* + ?&lt;/code&gt;
&lt;/h2&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Mr. Sharma
Mr Smith
Ms Devi
Mrs. Brown
Mr. J

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Let us try to write regex for the above names. First, let's write Regex for names starting with Mr&lt;/p&gt;

&lt;p&gt;So we can write &lt;code&gt;Mr&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fmnjbbrsprht222g8x0v5.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fmnjbbrsprht222g8x0v5.jpeg" alt="Mr.jpg" width="800" height="281"&gt;&lt;/a&gt;Now some names have a dot after the initials. So we need to write a regex to check the dot.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fk6l3iy3rnkdcm72q07fr.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fk6l3iy3rnkdcm72q07fr.jpeg" alt="2.jpg" width="800" height="286"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The &lt;code&gt;\.&lt;/code&gt; checks if there is a dot after Mr and the &lt;code&gt;?&lt;/code&gt; is for allowing either 1 dot or 0 dot. ie. It checks if there is a dot, but allows to match even if there is no dot present.&lt;/p&gt;

&lt;p&gt;Now to match the space after Mr, Mr., we write &lt;code&gt;\s&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F8aknm3l8wxtpn5rjobbg.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F8aknm3l8wxtpn5rjobbg.jpeg" alt="3.jpg" width="800" height="263"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In the names that are provided, every name starts with a capital letter. So we need to write regex for that.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Frgesq4du6f86ux7n2guk.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Frgesq4du6f86ux7n2guk.jpeg" alt="4.jpg" width="800" height="208"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;[A-Z]&lt;/code&gt; checks for any uppercase letter&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fobuwkbf9w9xpkh291ppu.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fobuwkbf9w9xpkh291ppu.jpeg" alt="5.jpg" width="799" height="201"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;\w&lt;/code&gt; checks for any word character &lt;code&gt;a-z&lt;/code&gt;, &lt;code&gt;A-Z&lt;/code&gt;, &lt;code&gt;0-9&lt;/code&gt;, &lt;code&gt;_&lt;/code&gt;. But we want to match the characters after the second letter as well right? Can you guess how can we do that?&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fk4rrcopfkefk3a2jhln0.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fk4rrcopfkefk3a2jhln0.gif" alt="think" width="500" height="345"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We can put an &lt;code&gt;*&lt;/code&gt; quantifier which allows matching of 0 or more instances. As we can see the final regex we have written so far is&lt;code&gt;Mr\.?\s[A-Z]\w*&lt;/code&gt; but it does not match for Ms, or Mrs. so let's try to incorporate those as well.&lt;/p&gt;

&lt;p&gt;What we need is a group &lt;code&gt;( )&lt;/code&gt; containing cases: After M the possible letters that are mentioned in the question are r, s and rs. So, our group will be &lt;code&gt;(r|s|rs)&lt;/code&gt;. Notice the &lt;code&gt;|&lt;/code&gt; means either or-- either &lt;code&gt;r&lt;/code&gt; or &lt;code&gt;s&lt;/code&gt; or &lt;code&gt;rs&lt;/code&gt;. The final regex will look like this:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fhb4pztrpbgybpy48fb9k.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fhb4pztrpbgybpy48fb9k.jpeg" alt="7.jpg" width="800" height="200"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Matching Emails
&lt;/h2&gt;

&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;NeoGCamp@gmail.com
neog.camp@bootcamp.edu
neog-roc8@my-work.net

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;em&gt;These are fake email addresses.&lt;/em&gt; But let's try to write a regular expression that will match all of these emails.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Coming soon...&lt;/em&gt;&lt;/p&gt;

</description>
      <category>regex</category>
      <category>javascript</category>
      <category>programmingblogs</category>
    </item>
    <item>
      <title>Understanding async and defer.</title>
      <dc:creator>Madhushree Kunder</dc:creator>
      <pubDate>Sat, 03 Jul 2021 15:08:21 +0000</pubDate>
      <link>https://dev.to/madhushreekunder/understanding-async-and-defer-173j</link>
      <guid>https://dev.to/madhushreekunder/understanding-async-and-defer-173j</guid>
      <description>&lt;p&gt;Async and Defer are two boolean attributes for script tag. Both &lt;code&gt;async&lt;/code&gt; and &lt;code&gt;defer&lt;/code&gt; increase the speed and performance of web apps by eliminating render-blocking JavaScript.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fjm0xificbteec84wu8um.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fjm0xificbteec84wu8um.png" alt="normal.png" width="800" height="122"&gt;&lt;/a&gt;With reference to the above image, consider we simply write &lt;code&gt;&amp;lt;script&amp;gt;&lt;/code&gt; without &lt;code&gt;async&lt;/code&gt; or &lt;code&gt;defer&lt;/code&gt;. Here, while the HTML is parsing, if a script tag is encountered, then the HTML parsing is paused and javascript is fetched. After fetching, the script is executed. During all this time the HTML parsing is paused which may lead to half-loaded webpages or very slow loading. HTML parsing is resumed only after Javascript is executed. The pausing of HTML parsing is known as render-blocking.&lt;/p&gt;

&lt;h1&gt;
  
  
  How can we improve this?
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Async
&lt;/h2&gt;

&lt;p&gt;One of the methods is using the &lt;code&gt;async&lt;/code&gt; boolean attribute. Take a look at the illustration below:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F27rvcumkm1y8ghyvxh9q.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F27rvcumkm1y8ghyvxh9q.png" alt="async.png" width="797" height="114"&gt;&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;script &lt;/span&gt;&lt;span class="na"&gt;async&lt;/span&gt; &lt;span class="na"&gt;src=&lt;/span&gt;&lt;span class="s"&gt;"script.js"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;When we use &lt;code&gt;async&lt;/code&gt; along with &lt;code&gt;&amp;lt;script&amp;gt;&lt;/code&gt;, the HTML parsing starts, and whenever &lt;code&gt;&amp;lt;script&amp;gt;&lt;/code&gt; is encountered, HTML parsing is not paused. Javascript is fetched asynchronously along with HTML parsing. This reduces the loading time of the webpage, boosting its performance. After the script is fetched, only then the HTML parsing is paused and the Javascript is executed. After js execution, the HTML parsing is resumed.&lt;/p&gt;

&lt;h2&gt;
  
  
  Defer
&lt;/h2&gt;

&lt;p&gt;The second boolean attribute is &lt;code&gt;defer&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fk8lqwn4iame0f6cj6b17.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fk8lqwn4iame0f6cj6b17.png" alt="defer.png" width="800" height="153"&gt;&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;script &lt;/span&gt;&lt;span class="na"&gt;defer&lt;/span&gt; &lt;span class="na"&gt;src=&lt;/span&gt;&lt;span class="s"&gt;"script.js"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;When we use &lt;code&gt;defer&lt;/code&gt;, HTML parsing is never paused. So your entire web page is loaded first. If in the process of parsing HTML, &lt;code&gt;&amp;lt;script&amp;gt;&lt;/code&gt; is encountered, then is fetched without pausing HTML parsing. After the entire HTML is parsed, the javascript is executed.&lt;/p&gt;

&lt;h3&gt;
  
  
  Note:
&lt;/h3&gt;

&lt;p&gt;If there are multiple inter-dependent scripts, say Javascript files, then using &lt;code&gt;async&lt;/code&gt; won't guarantee the order of execution. But with &lt;code&gt;defer&lt;/code&gt;, the scripts are executed in the same order as they are called.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fpzog70t2o29if0gdhcno.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fpzog70t2o29if0gdhcno.png" alt="async defer.png" width="800" height="391"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To learn more: &lt;a href="https://www.youtube.com/watch?v=IrHmpdORLu8" rel="noopener noreferrer"&gt;async vs defer attributes in Javascript&lt;/a&gt;&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>webdev</category>
      <category>async</category>
    </item>
    <item>
      <title>const, let, var when to use what?</title>
      <dc:creator>Madhushree Kunder</dc:creator>
      <pubDate>Wed, 09 Jun 2021 16:21:16 +0000</pubDate>
      <link>https://dev.to/madhushreekunder/const-let-var-when-to-use-what-3fhj</link>
      <guid>https://dev.to/madhushreekunder/const-let-var-when-to-use-what-3fhj</guid>
      <description>&lt;p&gt;Up until now, you must have been using &lt;code&gt;var&lt;/code&gt; to declare a variable in Javascript. But with ES6 came two new ways of declaring variables: &lt;code&gt;let&lt;/code&gt; and &lt;code&gt;const&lt;/code&gt;. But why ditch &lt;code&gt;var&lt;/code&gt; in the first place?🤔&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ff85eagsogjzgrc69melw.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ff85eagsogjzgrc69melw.gif" alt="Thinking" width="500" height="375"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Let us understand using the following piece of code:&lt;/p&gt;

&lt;p&gt;If you run &lt;code&gt;getAge(false)&lt;/code&gt; what output do you expect?&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;getAge&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;isYoung&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;isYoung&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;young&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Kiddo is full of energy!&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;old&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Elderly are very experienced!&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;young&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Options:
&lt;/h4&gt;

&lt;ol&gt;
&lt;li&gt;Elderly are very experienced!&lt;/li&gt;
&lt;li&gt;Kiddo is full of energy!&lt;/li&gt;
&lt;li&gt;ReferenceError: young is not defined&lt;/li&gt;
&lt;li&gt;undefined&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fepan8he6iimomfdbmwv1.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fepan8he6iimomfdbmwv1.gif" alt="DrumRoll" width="480" height="371"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you thought &lt;code&gt;undefined&lt;/code&gt;, then you are absolutely correct! 🎉 But why &lt;code&gt;undefined&lt;/code&gt;?&lt;/p&gt;

&lt;h3&gt;
  
  
  Hoisting
&lt;/h3&gt;

&lt;p&gt;So in your browser before executing any JS code, all the variables declared with &lt;code&gt;var&lt;/code&gt; are raised to the top of the function scope, in other words, &lt;strong&gt;&lt;a href="https://developer.mozilla.org/en-US/docs/Glossary/Hoisting" rel="noopener noreferrer"&gt;hoisted&lt;/a&gt;&lt;/strong&gt;. So at run-time the function &lt;code&gt;getAge(false)&lt;/code&gt; looks like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;getAge&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;isYoung&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;young&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;old&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;isYoung&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;young&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Kiddo is full of energy!&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;old&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Elderly are very experienced&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;young&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  let and const
&lt;/h3&gt;

&lt;p&gt;When using &lt;code&gt;var&lt;/code&gt;, variables are either scoped globally or locally to the function scope. So, how do we eliminate &lt;strong&gt;hoisting&lt;/strong&gt;? The solution would be something that scopes the variable to the block (block-scoping); &lt;code&gt;let&lt;/code&gt; and &lt;code&gt;const&lt;/code&gt; do exactly this. Variables declared with &lt;code&gt;let&lt;/code&gt; and &lt;code&gt;const&lt;/code&gt; inside a code block can only be accessed after they have been declared. The variables are stuck in the &lt;strong&gt;&lt;a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/let#temporal_dead_zone_tdz" rel="noopener noreferrer"&gt;Temporal Dead Zone&lt;/a&gt;&lt;/strong&gt; until the declaration is processed.&lt;/p&gt;

&lt;p&gt;Now that the variables are declared with &lt;code&gt;const&lt;/code&gt;, what do you expect to be the output from running &lt;code&gt;getAge(false)&lt;/code&gt;?&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;getAge&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;isYoung&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;isYoung&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
   &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;young&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Kiddo is full of energy!&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
   &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;old&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Elderly are very experienced&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;young&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Elderly are very experienced!&lt;/li&gt;
&lt;li&gt;Kiddo is full of energy!&lt;/li&gt;
&lt;li&gt;ReferenceError: young is not defined&lt;/li&gt;
&lt;li&gt;undefined&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;A &lt;code&gt;ReferenceError&lt;/code&gt; will be thrown because &lt;code&gt;young&lt;/code&gt; is not declared inside the &lt;code&gt;else&lt;/code&gt; statement, the &lt;code&gt;function scope&lt;/code&gt;, or the &lt;code&gt;global scope&lt;/code&gt;; which is exactly what we wanted. The variable is not being accessed outside its block.&lt;/p&gt;

&lt;h3&gt;
  
  
  Rules for using &lt;code&gt;let&lt;/code&gt; and &lt;code&gt;const&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;let&lt;/code&gt; and &lt;code&gt;const&lt;/code&gt; also have some other interesting properties.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Variables declared with &lt;code&gt;let&lt;/code&gt; can be reassigned but can’t be redeclared in the same scope.&lt;/li&gt;
&lt;li&gt;Variables declared with &lt;code&gt;const&lt;/code&gt; must be assigned an initial value, but can’t be redeclared in the same scope, and can’t be reassigned.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Guess the output for the following code!&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;color&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Orange&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nx"&gt;color&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Blue&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;color&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Undefined&lt;/li&gt;
&lt;li&gt;Orange&lt;/li&gt;
&lt;li&gt;Blue&lt;/li&gt;
&lt;li&gt;SyntaxError: Identifier 'color' has already been declared&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If you said &lt;strong&gt;Blue&lt;/strong&gt; then you are absolutely correct!🎉 Because &lt;code&gt;let&lt;/code&gt; lets the variable be reassigned.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fcdur5ey3d6gwneatee9v.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fcdur5ey3d6gwneatee9v.gif" alt="Pun" width="500" height="333"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;What do you expect to be the value of &lt;code&gt;color&lt;/code&gt; from running the following code?&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;color&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Orange&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="nx"&gt;color&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Blue&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Orange&lt;/li&gt;
&lt;li&gt;Blue&lt;/li&gt;
&lt;li&gt;TypeError: Assignment to constant variable.&lt;/li&gt;
&lt;li&gt;SyntaxError: Identifier 'color' has already been declared&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The answer is 3. It gives &lt;code&gt;TypeError&lt;/code&gt;. Because as we learnt above, variables declared with &lt;code&gt;const&lt;/code&gt; cannot be reassigned.&lt;/p&gt;

&lt;p&gt;What will happen when you run &lt;code&gt;obj&lt;/code&gt;? Will &lt;code&gt;a&lt;/code&gt; get a new value of 22 or will it be 1?&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;obj&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;a&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;b&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="nx"&gt;obj&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;a&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;22&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The answer is &lt;code&gt;obj&lt;/code&gt; will return &lt;code&gt;{ a:22, b:2 }&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Now consider,&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;obj1&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;a&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;23&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;b&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;33&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="nx"&gt;obj&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;obj1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;What is the answer here? Will the contents of &lt;code&gt;obj1&lt;/code&gt; be assigned to &lt;code&gt;obj?&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fup5c6y05g21nu8b46m42.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fup5c6y05g21nu8b46m42.gif" alt="Nope" width="480" height="278"&gt;&lt;/a&gt;Nope. It gives, &lt;code&gt;TypeError: Assignment to constant variable.&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;This is because the &lt;code&gt;const&lt;/code&gt; declaration creates a read-only reference to a value. It does not mean the value it holds is immutable—just that the variable identifier cannot be reassigned. In our case where the content is an object, the object's contents, what is inside the object can be altered, just that the reference cannot be changed.&lt;/p&gt;

&lt;h3&gt;
  
  
  Summary
&lt;/h3&gt;

&lt;p&gt;Now we have learnt that we can use &lt;code&gt;let&lt;/code&gt; when we want to reassign new values to a variable. But if new values won't be reassigned to a variable, then it's good practice to declare it with &lt;code&gt;const&lt;/code&gt;. Now that is sorted, what is left is &lt;code&gt;var&lt;/code&gt;. You shouldn't really use &lt;code&gt;var&lt;/code&gt; unless you want to declare a variable globally, which is often considered bad practice. So, now you can start using &lt;code&gt;let&lt;/code&gt; and &lt;code&gt;const&lt;/code&gt; in your codebase and save yourself from making mistakes! Happy Coding!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fpyv9f498g7fl1j68su63.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fpyv9f498g7fl1j68su63.gif" alt="Yay" width="414" height="314"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>variables</category>
      <category>es6</category>
    </item>
    <item>
      <title>Do you know the process of creating a Portfolio website?</title>
      <dc:creator>Madhushree Kunder</dc:creator>
      <pubDate>Fri, 04 Dec 2020 22:05:45 +0000</pubDate>
      <link>https://dev.to/madhushreekunder/do-you-know-the-process-of-creating-a-portfolio-website-4ipl</link>
      <guid>https://dev.to/madhushreekunder/do-you-know-the-process-of-creating-a-portfolio-website-4ipl</guid>
      <description>&lt;p&gt;Making your &lt;strong&gt;personal portfolio&lt;/strong&gt; can be tricky. So I have written down some points which will help you in designing your first ever portfolio website! Let's get started.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F1mitgflloasmdj3w3pua.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F1mitgflloasmdj3w3pua.png" alt="undraw_building_websites_i78t.png" width="800" height="589"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The first step is to go to &lt;a href="https://www.google.com/" rel="noopener noreferrer"&gt;Google&lt;/a&gt; and search- "simple and best portfolio websites".&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Browse through different portfolios and take inspiration.&lt;/li&gt;
&lt;li&gt;Some portfolio may have a beautiful navigation bar, others may have interesting buttons.&lt;/li&gt;
&lt;li&gt;Choose your liking and roughly think about how your portfolio would look.&lt;/li&gt;
&lt;li&gt;After having a rough idea, you can use tools like &lt;a href="https://www.figma.com/" rel="noopener noreferrer"&gt;Figma&lt;/a&gt; to put your idea into a picture.&lt;/li&gt;
&lt;li&gt;If it looks good, then proceed to the next step; if not, then make minute changes till it looks good.&lt;/li&gt;
&lt;li&gt;Now you can try to replicate your website design using HTML, CSS, BOOTSTRAP, etc.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Now if you don't want to make a design using tools like Figma, then-&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;If you don't have a fixed design in mind, then try to create a component library.&lt;/li&gt;
&lt;li&gt;It should have all the elements your website may contain, eg: navigation bar, links, headings, small texts, lists, footer, etc.&lt;/li&gt;
&lt;li&gt;Now to get started, choose a nice legible font from &lt;a href="https://fonts.google.com/" rel="noopener noreferrer"&gt;google fonts.&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;To use the font, import it.&lt;/li&gt;
&lt;li&gt;Next, select a nice color from &lt;a href="https://tailwindcss.com/docs/customizing-colors" rel="noopener noreferrer"&gt;Tailwind CSS colors&lt;/a&gt;; you can also choose more than one color in your design. But see to it that it doesn't look like a Christmas tree. &lt;/li&gt;
&lt;li&gt;Minimalism is often appreciated. &lt;/li&gt;
&lt;li&gt;Now choose a hero image for your website. If you don't already have an image to put in your portfolio then go to &lt;a href="https://dev.to/scottw/-undraw-10ge-temp-slug-8229813"&gt;unDraw&lt;/a&gt; to select illustrations of your choice. Put it in an images folder.&lt;/li&gt;
&lt;li&gt;Now according to the design of the component library, start building your website.&lt;/li&gt;
&lt;li&gt;You can use languages like HTML, CSS, Javascript, etc, and &lt;a href="https://code.visualstudio.com/" rel="noopener noreferrer"&gt;VSCode&lt;/a&gt; to make your website.&lt;/li&gt;
&lt;li&gt;While making a portfolio it is important to personalize it.&lt;/li&gt;
&lt;li&gt;There will be times when you will get stuck. The best way is to google your query using appropriate keywords.&lt;/li&gt;
&lt;li&gt;Troubleshooting helps a developer grow, so before asking a friend or a mentor, try to solve it yourself.&lt;/li&gt;
&lt;li&gt;While writing your code, keep pushing it to &lt;a href="https://dev.to/konstruktoid/konstruktoid-deleted-branch-renovatestep-security-harden-runner-2x-at-konstruktoidtymely-4g6h-temp-slug-892592"&gt;GitHub&lt;/a&gt; using appropriate commit messages.&lt;/li&gt;
&lt;li&gt;Once your writing part is done, finally push it to GitHub and host your app on &lt;a href="https://www.netlify.com/" rel="noopener noreferrer"&gt;Netlify&lt;/a&gt;. &lt;/li&gt;
&lt;li&gt;Add your hosted link to GitHub and other social media platforms, and showcase it to your family and friends.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Congratulations! By understanding these points, you can proceed to create your own portfolio website! You are free to use any tools of your choice, regardless of what's mentioned above. #HappyLearning #KeepCreating&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>portfolio</category>
      <category>generalprogramming</category>
    </item>
  </channel>
</rss>
