'javascript regex (username validation)
I want to enforce that
- the input firstname should only contains characters A-Z, a-z, and -
- the input login name should only contains alphanumeric characters
How do I restrict the two rules in javascript?
Below is my code (jsp) for username regex. But it's not working properly.
function validateForm(){
var nameRegex = /^[a-zA-Z\-]+$/;
var validfirstUsername = document.frm.firstName.value.match(nameRegex);
if(validUsername == null){
alert("Your first name is not valid. Only characters A-Z, a-z and '-' are acceptable.");
document.frm.firstName.focus();
return false;
}
}
Thanks!
Solution 1:[1]
The code you have looks fine, aside from the inconsistent variable reference (see the comment by Josh Purvis).
The following regex is fine for your first name spec:
var nameRegex = /^[a-zA-Z\-]+$/;
Adding digits for your username check is straightforward:
var usernameRegex = /^[a-zA-Z0-9]+$/;
Note: There are many ways to write regular expressions. I've chosen to provide a version that matches what you started with. I encourage you to work through this Regular Expression Tutorial
Solution 2:[2]
Here's the validation function I came up with, tailor it for your own use-cases:
function isUserNameValid(username) {
/*
Usernames can only have:
- Lowercase Letters (a-z)
- Numbers (0-9)
- Dots (.)
- Underscores (_)
*/
const res = /^[a-z0-9_\.]+$/.exec(username);
const valid = !!res;
return valid;
}
Solution 3:[3]
Usernames can only use letters, numbers, underscores, and periods.
const onValidUsername = (val) => {
const usernameRegex = /^[a-z0-9_.]+$/
return usernameRegex.test(val)
}
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | Jason McCreary |
| Solution 2 | Ben Winding |
| Solution 3 | Amir |
