Last active
July 26, 2024 18:24
-
-
Save aalfiann/8197bec53d0ec9cb246f23a53ccb1f00 to your computer and use it in GitHub Desktop.
Validation Regex (Pure JS)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* 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