<?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: Utkarsh Dhiman</title>
    <description>The latest articles on DEV Community by Utkarsh Dhiman (@utkarshdhiman48).</description>
    <link>https://dev.to/utkarshdhiman48</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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F246107%2F319cf96b-d4a6-43e0-b74d-d54900b2ed0a.jpg</url>
      <title>DEV Community: Utkarsh Dhiman</title>
      <link>https://dev.to/utkarshdhiman48</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/utkarshdhiman48"/>
    <language>en</language>
    <item>
      <title>Custom Frontend for Google Form</title>
      <dc:creator>Utkarsh Dhiman</dc:creator>
      <pubDate>Sat, 30 Jan 2021 12:28:15 +0000</pubDate>
      <link>https://dev.to/utkarshdhiman48/custom-frontend-for-google-form-456l</link>
      <guid>https://dev.to/utkarshdhiman48/custom-frontend-for-google-form-456l</guid>
      <description>&lt;p&gt;Google form is one of the easiest ways to collect data. The collected data is preorganized and can be analyzed using various tools and add-ons.&lt;/p&gt;

&lt;h4&gt;
  
  
  Prequisite
&lt;/h4&gt;

&lt;p&gt;You should be familiar with &lt;a href="https://developer.mozilla.org/en-US/docs/Web/HTML/Element/form" rel="noopener noreferrer"&gt;HTML forms&lt;/a&gt; at least. Having knowledge of JavaScript and &lt;a href="https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch" rel="noopener noreferrer"&gt;fetch API&lt;/a&gt; will be great.&lt;/p&gt;

&lt;h3&gt;
  
  
  Need of custom front-end
&lt;/h3&gt;

&lt;p&gt;There may be cases when you need a consistent design for your website. Although you can always create your form with a server and database but embedding Google form in your website can be much easier and economical.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Implementation&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;The very first requirement is to turn off the 'Require sign-in' sub-options in form settings.&lt;br&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.amazonaws.com%2Fi%2F5ehljhd5x7wj7x2ss8fp.JPG" 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.amazonaws.com%2Fi%2F5ehljhd5x7wj7x2ss8fp.JPG" alt="Google Form settings" width="583" height="520"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Open your Google Form using the sharable link to extract the necessary information, it can be tricky at times.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Open Browser DevTools (F12 or Ctrl+Shift+i for chrome)&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Extracting Form Action URL&lt;br&gt;
search for &lt;code&gt;&amp;lt;form&lt;/code&gt;&lt;br&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.amazonaws.com%2Fi%2Fxm7zp3vjzy2hf7gdu5jm.JPG" 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.amazonaws.com%2Fi%2Fxm7zp3vjzy2hf7gdu5jm.JPG" alt="Extracting action URL" width="800" height="571"&gt;&lt;/a&gt;&lt;br&gt;
get the &lt;code&gt;action&lt;/code&gt; attribute of form. It looks like &lt;a href="https://docs.google.com/forms/u/0/d/e/1FAIpQLSfAnJAbfTl23gNM6gAbU1gAXo03N9I6pf5LJbo3Ptmex5nqUg/formResponse" rel="noopener noreferrer"&gt;https://docs.google.com/forms/u/0/d/e/1FAIpQLSfAnJAbfTl23gNM6gAbU1gAXo03N9I6pf5LJbo3Ptmex5nqUg/formResponse&lt;/a&gt; &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Extracting &lt;code&gt;name&lt;/code&gt; attribute(s)&lt;br&gt;
Search for &lt;code&gt;&amp;lt;input&lt;/code&gt; in DevTools, you may find many input fields look for the one that looks like this. &lt;code&gt;entry.294341084&lt;/code&gt;&lt;br&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.amazonaws.com%2Fi%2Fovd3afl5bivi8oe5iqun.JPG" 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.amazonaws.com%2Fi%2Fovd3afl5bivi8oe5iqun.JPG" alt="Extracting name attributes" width="800" height="571"&gt;&lt;/a&gt;&lt;br&gt;
Input fields for inputs like radio button etc. are not present initially you have to select any option which will create a corresponding hidden input element otherwise, simply remove the &lt;code&gt;\_sentinel&lt;/code&gt; form &lt;code&gt;entry.100000084\_sentinel&lt;/code&gt; without checking radio button.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;
  
  
  Custom front-end can be created in either of the following ways.
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Only HTML forms&lt;/strong&gt;: Easy way&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Fetch API + HTML forms&lt;/strong&gt;: Better way&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;
  
  
  Only HTML form
&lt;/h4&gt;

&lt;p&gt;Create an HTML form, set its &lt;code&gt;action&lt;/code&gt; attribute to previously extracted &lt;code&gt;action URL&lt;/code&gt; and &lt;code&gt;method&lt;/code&gt; attribute should be &lt;code&gt;POST&lt;/code&gt;.&lt;br&gt;
Set &lt;code&gt;name&lt;/code&gt; attributes to corresponding input(s).&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;form&lt;/span&gt; &lt;span class="na"&gt;method=&lt;/span&gt;&lt;span class="s"&gt;"post"&lt;/span&gt; &lt;span class="na"&gt;id=&lt;/span&gt;&lt;span class="s"&gt;"form"&lt;/span&gt; &lt;span class="na"&gt;action=&lt;/span&gt;&lt;span class="s"&gt;"https://docs.google.com/forms/d/e/1FAIpQLSfAnJAbfTl23gNM6gAbU1gAXo03N9I6pf5LJbo3Ptmex5nqUg/formResponse"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;label&lt;/span&gt; &lt;span class="na"&gt;for=&lt;/span&gt;&lt;span class="s"&gt;"inp1"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Write something&lt;span class="nt"&gt;&amp;lt;/label&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;input&lt;/span&gt; &lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;"text"&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"entry.294341084"&lt;/span&gt; &lt;span class="na"&gt;id=&lt;/span&gt;&lt;span class="s"&gt;"inp1"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;input&lt;/span&gt; &lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;"submit"&lt;/span&gt; &lt;span class="na"&gt;value=&lt;/span&gt;&lt;span class="s"&gt;"Submit"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/form&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That's it add CSS to make it beautiful.&lt;br&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.amazonaws.com%2Fi%2Fdlpuwrhv8soj9ktrvulz.jpg" 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.amazonaws.com%2Fi%2Fdlpuwrhv8soj9ktrvulz.jpg" alt="With css" width="800" height="310"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;With this approach, on submission, you will be redirected to the Google Forms acknowledgment page. -_- not so cool. You can avoid this by using fetch API.&lt;/p&gt;
&lt;h4&gt;
  
  
  Fetch API + HTML form
&lt;/h4&gt;

&lt;p&gt;Create a Form, can be same as above. Prevent default behaviour of form so as to use fetch API using javascript. You have to set Method to post, the header should be &lt;code&gt;"Content-Type": "application/json"&lt;/code&gt;. You may or may not set &lt;code&gt;mode&lt;/code&gt; to &lt;code&gt;no-cors&lt;/code&gt; it will throw an error on &lt;code&gt;cors&lt;/code&gt; mode but will work anyway.&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;url&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;https://docs.google.com/forms/d/e/1FAIpQLSfAnJAbfTl23gNM6gAbU1gAXo03N9I6pf5LJbo3Ptmex5nqUg/formResponse&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;//action url&lt;/span&gt;
&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;form&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;querySelector&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;#form&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;//form element&lt;/span&gt;

&lt;span class="nx"&gt;form&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;addEventListener&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;submit&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="nx"&gt;e&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;=&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;e&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;preventDefault&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;&lt;span class="c1"&gt;//prevent default behaviour&lt;/span&gt;

    &lt;span class="nf"&gt;fetch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;url&lt;/span&gt;&lt;span class="p"&gt;,{&lt;/span&gt;
        &lt;span class="na"&gt;method&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;POST&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="na"&gt;mode&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;no-cors&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="na"&gt;header&lt;/span&gt;&lt;span class="p"&gt;:{&lt;/span&gt;
            &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Content-Type&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;application/json&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
            &lt;span class="p"&gt;},&lt;/span&gt;
        &lt;span class="na"&gt;body&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nf"&gt;getInputData&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;span class="nf"&gt;then&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="o"&gt;=&amp;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;data&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="nf"&gt;alert&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Form Submitted&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="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;catch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;err&lt;/span&gt;&lt;span class="o"&gt;=&amp;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;error&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;err&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt; &lt;span class="c1"&gt;//promise based&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;

&lt;span class="c1"&gt;//populating input data&lt;/span&gt;
&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;getInputData&lt;/span&gt;&lt;span class="p"&gt;(){&lt;/span&gt;
    &lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;dataToPost&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;FormData&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt; &lt;span class="c1"&gt;//formdata API&lt;/span&gt;

    &lt;span class="c1"&gt;//fill name attributes to corresponding values&lt;/span&gt;
    &lt;span class="nx"&gt;dataToPost&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;append&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;entry.294341084&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;querySelector&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;#inp1&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;value&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;dataToPost&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;p&gt;The response from fetch &lt;code&gt;post&lt;/code&gt; request is not satisfactory, but it doesn't matter since it works. ;P&lt;br&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.amazonaws.com%2Fi%2Fvrn86w0m1iupq0tc3bb1.JPG" 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.amazonaws.com%2Fi%2Fvrn86w0m1iupq0tc3bb1.JPG" alt="fetch api response" width="570" height="39"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The advantage of using this approach over HTML forms is you have full control, the user won't be redirected to Google Form's acknowledgement page.&lt;/p&gt;

&lt;p&gt;Checkout a working example here.&lt;br&gt;
&lt;iframe src="https://jsfiddle.net/utkarsh48/bgc0fhs5//embedded/result,js,html,css//dark" width="100%" height="600"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;h3&gt;
  
  
  Considerations
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;  Custom Front End for the google forms can only be used to collect data.&lt;/li&gt;
&lt;li&gt;  It will work only if ‘Require Sign-In’ is turned off in Google form settings.&lt;/li&gt;
&lt;li&gt;  For Radio buttons, checkboxes etc. only exact values will be accepted, even a small spelling mistake will discard the answer for that particular question.&lt;/li&gt;
&lt;li&gt;  Tricky and Time-Consuming&lt;/li&gt;
&lt;li&gt;  Partial Response by the user if not handled properly, so frontend design should also validate user responses.&lt;/li&gt;
&lt;li&gt;  Sections in google form can be submitted by a single &lt;code&gt;post&lt;/code&gt; request.&lt;/li&gt;
&lt;li&gt;  Images can also be posted using this approach.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It may be a time-consuming task to create a custom frontend for a google form, but results can be worth the effort.&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>html</category>
      <category>frontend</category>
      <category>googleform</category>
    </item>
    <item>
      <title>Regular Expressions - not so regular!</title>
      <dc:creator>Utkarsh Dhiman</dc:creator>
      <pubDate>Sun, 17 May 2020 15:13:16 +0000</pubDate>
      <link>https://dev.to/utkarshdhiman48/regular-expressions-not-so-regular-2m9p</link>
      <guid>https://dev.to/utkarshdhiman48/regular-expressions-not-so-regular-2m9p</guid>
      <description>&lt;h3&gt;
  
  
  Table Of Contents
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Modifiers (or flags)&lt;/li&gt;
&lt;li&gt;Brackets&lt;/li&gt;
&lt;li&gt;Meta Characters&lt;/li&gt;
&lt;li&gt;Quantifiers&lt;/li&gt;
&lt;li&gt;Miscellaneous&lt;/li&gt;
&lt;li&gt;Real World applications&lt;/li&gt;
&lt;li&gt;Summary&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;Regular Expressions aka RegEx. or RegExp. are powerful tools widely used for pattern matching within strings. They are supported by almost all programming languages. However choice of language plays a key role in deciding the usage and syntax of the same. Here, I'll be using JavaScript. A Website &lt;a href="https://regex101.com" rel="noopener noreferrer"&gt;regex101&lt;/a&gt; will let you use regular expressions even without the knowledge of programming language.&lt;/p&gt;

&lt;h3&gt;
  
  
  What does it look like?
&lt;/h3&gt;

&lt;p&gt;&lt;iframe src="https://jsfiddle.net/utkarsh48/d01mxacu//embedded/js//dark" width="100%" height="600"&gt;
&lt;/iframe&gt;
&lt;br&gt;
This code will make sense as you proceed further.&lt;/p&gt;
&lt;h2&gt;
  
  
  How to use regular expressions
&lt;/h2&gt;

&lt;p&gt;It depends majorly upon the language. In JavaScript there are various functions for the same eg: &lt;code&gt;match()&lt;/code&gt;, &lt;code&gt;test()&lt;/code&gt; and &lt;code&gt;search()&lt;/code&gt; are widely used. In MySQL keyword &lt;code&gt;LIKE&lt;/code&gt;, &lt;code&gt;REGEXP&lt;/code&gt; or operator &lt;code&gt;~&lt;/code&gt; (aka post-fix operator) are used for searching.&lt;/p&gt;

&lt;p&gt;&lt;iframe src="https://jsfiddle.net/utkarsh48/uhzk8gL4//embedded/js,result//dark" width="100%" height="600"&gt;
&lt;/iframe&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.amazonaws.com%2Fuploads%2Farticles%2Fl0tnqom5yzptfjnic10s.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.amazonaws.com%2Fuploads%2Farticles%2Fl0tnqom5yzptfjnic10s.jpeg" alt="A meme" width="616" height="500"&gt;&lt;/a&gt;&lt;/p&gt;
Kneel before the god ;P by &lt;a href="https://memegenerator.com" rel="noopener noreferrer"&gt;memegenerator&lt;/a&gt;



&lt;h2&gt;
  
  
  Regular Expressions usually have
&lt;/h2&gt;

&lt;p&gt;Quantifiers, Operators, Modifiers (or Flags).&lt;/p&gt;

&lt;h3&gt;
  
  
  Modifiers &lt;a&gt;&lt;/a&gt;
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;tr&gt;
&lt;th&gt;Modifier&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;'g'&lt;/td&gt;
&lt;td&gt;for global search i.e. It won't stop searching after first match and will return all the matches.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;'i'&lt;/td&gt;
&lt;td&gt;for case in-sensitive search&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;'m'&lt;/td&gt;
&lt;td&gt;for multi-line search (the regexp should be surrounded by ^ and $)&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  Brackets&lt;a&gt;&lt;/a&gt;
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;tr&gt;
&lt;th&gt;Brackets&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;[abc]&lt;/td&gt;
&lt;td&gt;look for any one character between the square brackets(like an OR operator in programming languages)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;[a-z]&lt;/td&gt;
&lt;td&gt;includes all lower-case alphabets&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;[A-Z]&lt;/td&gt;
&lt;td&gt;includes all upper-case alphabets&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;[A-z]&lt;/td&gt;
&lt;td&gt;includes both upper-case and lower-case alphabets&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;[0-9]&lt;/td&gt;
&lt;td&gt;includes all numerals&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;[^abc]&lt;/td&gt;
&lt;td&gt;Will look for everything other than a,b,c (^ represents inverse here only in square-brackets otherwise it represent anchor operator)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;(p|q)&lt;/td&gt;
&lt;td&gt;It is known as grouping operator, it divides the expression within sub-groups. It also saves the index of subgroup starting from 1-9 (which is used by back-reference operator)&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  Meta characters&lt;a&gt;&lt;/a&gt;
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;tr&gt;
    &lt;th&gt;Meta-character&lt;/th&gt;
    &lt;th&gt;Description&lt;/th&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
    &lt;td&gt;.&lt;/td&gt;
    &lt;td&gt;Finds a single character, except newline or line terminator&lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
    &lt;td&gt;\w&lt;/td&gt;
    &lt;td&gt;Finds a word character it include [A-Za-z0-9_]&lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
    &lt;td&gt;\W&lt;/td&gt;
    &lt;td&gt;Finds a non-word character&lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
    &lt;td&gt;\d&lt;/td&gt;
    &lt;td&gt;Finds a digit&lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
    &lt;td&gt;\D&lt;/td&gt;
    &lt;td&gt;Finds a non-digit character&lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
    &lt;td&gt;\s&lt;/td&gt;
    &lt;td&gt;Finds a white-space character&lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
    &lt;td&gt;\S&lt;/td&gt;
    &lt;td&gt;Finds a character that is not white-space&lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
    &lt;td&gt;\b&lt;/td&gt;
    &lt;td&gt;Finds a match only at the beginning or end of a word, beginning like this: \bHI, end like this: HI\b&lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
    &lt;td&gt;\B&lt;/td&gt;
    &lt;td&gt;Finds a match, where \b doesn't&lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
    &lt;td&gt;\n&lt;/td&gt;
    &lt;td&gt;Finds a line feed character&lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
    &lt;td&gt;\f&lt;/td&gt;
    &lt;td&gt;Finds a form feed character&lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
    &lt;td&gt;\r&lt;/td&gt;
    &lt;td&gt;Finds a carriage return character&lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
    &lt;td&gt;\t&lt;/td&gt;
    &lt;td&gt;Finds a tab character&lt;/td&gt;
  &lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  Quantifiers&lt;a&gt;&lt;/a&gt;
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;tr&gt;
&lt;th&gt;Quantifiers&lt;/th&gt;
&lt;th&gt;Description (n here is anything you want to match)&lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;n{2}&lt;/td&gt;
&lt;td&gt;match only 2 instances of n&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;n{1,5}&lt;/td&gt;
&lt;td&gt;match at least 1 at most 5 instances of n&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;n{1,}&lt;/td&gt;
&lt;td&gt;match at least 1 instance of n&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;n+&lt;/td&gt;
&lt;td&gt;Shorthand to match 1 or more instances of n&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;n*&lt;/td&gt;
&lt;td&gt;Shorthand to match 0 or more instances of n&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;n?&lt;/td&gt;
&lt;td&gt;Shorthand to match 0 or 1 instances of n&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  Miscellaneous&lt;a&gt;&lt;/a&gt;
&lt;/h3&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%2Fimgs.xkcd.com%2Fcomics%2Fbackslashes.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%2Fimgs.xkcd.com%2Fcomics%2Fbackslashes.png" alt="escape sequence" width="571" height="207"&gt;&lt;/a&gt;&lt;/p&gt;

Meme on escape-sequence by &lt;a href="https://xkcd.com" rel="noopener noreferrer"&gt;xkcd&lt;/a&gt;




&lt;p&gt;'|' operator can be used to separate sub groups.&lt;br&gt;
'\1' operator(aka back-reference operator) is used to refer to previous subgroup of that index 1 in this case.&lt;br&gt;
There is no concatenation operator as such. Things written together are already concatenated.&lt;br&gt;
Some symbols that are used in expressions can't be used directly. '\' (backslash) is used to escape-sequence.&lt;br&gt;
Multiple bracket sets can be used like [a-z] and [0-9] can be combined in following way [a-z0-9] without '|' and space.&lt;br&gt;
^ and $ are used at beginning and end respectively however when ^ is used as [^\w]+ it is used to invert the selection. In this case no word will be selected i.e. only symbols and white spaces will be selected.&lt;/p&gt;

&lt;p&gt;&lt;iframe src="https://jsfiddle.net/utkarsh48/uLwbz4km//embedded/js,result//dark" width="100%" height="600"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;h2&gt;
  
  
  Let's see some interesting examples
&lt;/h2&gt;

&lt;p&gt;To validate an email, username and password&lt;br&gt;
&lt;iframe src="https://jsfiddle.net/utkarsh48/nvgeamhL//embedded/js,result//dark" width="100%" height="600"&gt;
&lt;/iframe&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.amazonaws.com%2Fuploads%2Farticles%2Fz7xc7gxh5w6551kb82cm.jpg" 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.amazonaws.com%2Fuploads%2Farticles%2Fz7xc7gxh5w6551kb82cm.jpg" alt="meme on regular expressions" width="625" height="342"&gt;&lt;/a&gt;&lt;/p&gt;
Values are screened by RegExp. for security purpose. By &lt;a href="https://quickmeme.com" rel="noopener noreferrer"&gt;Quickmeme&lt;/a&gt;



&lt;h2&gt;
  
  
  Real-world application of RegEx.&lt;a&gt;&lt;/a&gt;
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Forms:&lt;/strong&gt; Usernames, Email addresses, passwords etc. are validated through RegEx. expressions. as seen above.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Search:&lt;/strong&gt; RegEx. are used to search for files and within files. Sometimes replacement is followed by search.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Replace:&lt;/strong&gt; With new updates in languages newer syntax come into play and sometimes older syntax are depreciated. Therefore changing each line of code would be a miserable. To ease the process there are programs that can convert syntax without damaging the functioning of original code.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Data Extraction:&lt;/strong&gt; RegEx. are used in SQL (a language that makes queries to database) to look for records matching some criteria.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&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.amazonaws.com%2Fuploads%2Farticles%2Fftw96ydwkc9ktbkso1tn.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.amazonaws.com%2Fuploads%2Farticles%2Fftw96ydwkc9ktbkso1tn.png" alt="saved the day" width="600" height="607"&gt;&lt;/a&gt;&lt;/p&gt;
Saved the day. Source &lt;a href="https://xkcd.com" rel="noopener noreferrer"&gt;Xkcd&lt;/a&gt;



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

&lt;p&gt;With Regular expression in your tool box, you can manipulate strings like pro!&lt;br&gt;
Otherwise your life would be much more difficult than it need to be. Learn more at &lt;a href="https://www.w3schools.com/jsref/jsref_obj_regexp.asp" rel="noopener noreferrer"&gt;W3school&lt;/a&gt;&lt;br&gt;
 &lt;a href="http://web.mit.edu/gnu/doc/html/regex_3.html" rel="noopener noreferrer"&gt;or here&lt;/a&gt;&lt;/p&gt;

</description>
      <category>regex</category>
    </item>
  </channel>
</rss>
