Me gustaría validar un nombre de usuario usando una expresión regular, sin embargo, la expresión que usé funcionó bien en https://regexr.com/ pero no en mi código. Solo quiero que el usuario pueda agregar solo alfanumérico y un espacio entre ellos
var letters = /^[A-Za-z]+$/g; function validate() { var input = document.getElementById("fname").value; if (input.match(letters)) { document.getElementById("name").innerHTML = "** Only alphabets are allowed in name."; return false; } } <input id="fname"> <input type="button" onclick="validate()" value="Check"> <br> <span id="name"></span>Su función actual es "buscar caracteres alfanuméricos". Entonces, cuando ejecutas validate() , devuelve un Array válido o null . Para obtener espacios, use /^[\w\-\s]+$/ aunque esto devolverá verdadero para múltiples espacios. No estoy seguro de su caso de uso.
A menos que desee cambiar su expresión regular, debe mostrar su advertencia cuando input.match() devuelva un valor falso. Para ello, Lugar ! antes de su función input.match()
var letters = /^[\w\-\s]+$/; function validate() { document.getElementById("name").innerHTML = ""; var input = document.getElementById("fname").value; if (!input.match(letters)) { document.getElementById("name").innerHTML = "** Only alphabets are allowed in name."; return false; } } <input id="fname"> <input type="button" onclick="validate()" value="Check"> <br> <span id="name"></span>