JSFiddle - React, Tailwind, and code Playground

by Andrey Aires

HTML

<div class="result">

</div>

JavaScript

function validate(text) {

  /* Credits: http://emailregex.com/ */
  var email = new RegExp(/^[-a-z0-9~!$%^&*_=+}{\'?]+(\.[-a-z0-9~!$%^&*_=+}{\'?]+)*@([a-z0-9_][-a-z0-9_]*(\.[-a-z0-9_]+)*\.(aero|arpa|biz|com|coop|edu|gov|info|int|mil|museum|name|net|org|pro|travel|mobi|[a-z][a-z])|([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}))(:[0-9]{1,5})?$/i);
  /* Credits: https://mathiasbynens.be/demo/url-regex */
  var link = new RegExp(/^(?:(?:https?|ftp):\/\/)?(?:\S+(?::\S*)?@)?(?:(?!(?:10|127)(?:\.\d{1,3}){3})(?!(?:169\.254|192\.168)(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z\u00a1-\uffff0-9]-*)*[a-z\u00a1-\uffff0-9]+)(?:\.(?:[a-z\u00a1-\uffff0-9]-*)*[a-z\u00a1-\uffff0-9]+)*(?:\.(?:[a-z\u00a1-\uffff]{2,}))\.?)(?::\d{2,5})?(?:[/?#]\S*)?$/i);
  var message = new RegExp(/\s/);

  if (email.test(text)) {
    return {
      type: "email",
      text: text
    }
  } else if (link.test(text)) {
    return {
      type: "link",
      text: text
    }
  } else if (message.test(text)) {
    return {
      type: "message",
      text: text
    }
  } else {
    return {
      type: "error",
      text: "Digite um e-mail ou link!"
    };
  }
}
if ( validate('').type === "error" ) {
	$('.result').text(validate('').text);
}