Skip to content

Instantly share code, notes, and snippets.

@aalfiann
Last active July 26, 2024 18:24
Show Gist options
  • Save aalfiann/8197bec53d0ec9cb246f23a53ccb1f00 to your computer and use it in GitHub Desktop.
Save aalfiann/8197bec53d0ec9cb246f23a53ccb1f00 to your computer and use it in GitHub Desktop.
Validation Regex (Pure JS)
/**
* Validation Regex. Default is alphanumeric.
*
* @param strvalue = is the text or source to be regex. You can use selector id at here.
* @param regexvalue = your regex value here but there is alphanumeric, alphabet, numeric, username and email already exist.
* @param isElementID = if this set to true, then strvalue will read from element ID.
* @return boolean
*/
function validationRegex(strvalue,regexvalue,isElementID){
regexvalue=(regexvalue===undefined)?"alphanumeric":regexvalue;
isElementID=(isElementID===undefined)?false:isElementID;
switch (regexvalue) {
case "required":
regexvalue = /.*\S.*/
break;
case "fullname":
regexvalue = /^[A-Za-z0-9 .,]+$/
break;
case "account-number-bank":
regexvalue = /^[A-Za-z0-9]+$/
break;
case "date":
regexvalue = /([123456789]\d{3}-(0[1-9]|1[0-2])-(0[1-9]|[12]\d|3[01]))/
break;
case "timestamp":
regexvalue = /^\d\d\d\d-(0?[1-9]|1[0-2])-(0?[1-9]|[12][0-9]|3[01]) (00|[0-9]|1[0-9]|2[0-3]):([0-9]|[0-5][0-9]):([0-9]|[0-5][0-9])$/
break;
case "alphanumeric":
regexvalue = /^[a-zA-Z0-9]+$/;
break;
case "alphabet":
regexvalue = /^[a-zA-Z]+$/;
break;
case "decimal":
regexvalue = /^[+-]?[0-9]+(?:\.[0-9]+)?$/;
break;
case "notzero":
regexvalue = /^[1-9][0-9]*$/;
break;
case "numeric":
regexvalue = /^[0-9]+$/;
break;
case "double":
regexvalue = /^[+-]?[0-9]+(?:,[0-9]+)*(?:\.[0-9]+)?$/;
break;
case "username":
regexvalue = /^[a-zA-Z0-9]{3,20}$/;
break;
case "domain":
regexvalue = /^[a-zA-Z0-9][a-zA-Z0-9-]{1,61}[a-zA-Z0-9](?:\.[a-zA-Z]{2,})+$/;
break;
case "url":
regexvalue = /(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/;
break;
case "email":
regexvalue = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
break;
case "email-rfc":
regexvalue = /^(?=.{1,64}@)[a-z0-9._%+-]+@([a-z0-9-]+\.)+[a-z]{2,}$/;
break;
case "email-simple":
regexvalue = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,4})+$/;
break;
case "strongpassword":
regexvalue = /^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[!@#\$%\^&\*])(?=.{8,})/
break;
case "mediumpassword":
regexvalue = /^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.{6,})/
break;
default:
regexvalue = regexvalue;
}
var rgx = "";
if (isElementID){
rgx = document.getElementById(strvalue).value;
} else {
rgx = strvalue;
}
if (regexvalue.test(rgx) == false) {
return false;
}
return true;
}
// Usage with numeric regex
if (validationRegex("1abc2","numeric")){
console.log("true");
} else {
console.log("false");
}
// Usage with custom regex
if (validationRegex("1abc2",/^[a-zA-Z0-9]{3,20}$/)){
console.log("true");
} else {
console.log("false");
}
// Usage with custom regex from selector id value
<input id="tester" type="text" value="1abc2">
if (validationRegex("tester",/^[a-zA-Z0-9]{3,20}$/,true)){
console.log("true");
} else {
console.log("false");
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment