¿Hay alguna forma de mejorar este código?
Quiero variables que no comiencen con números y no incluyan caracteres especiales, como (!@#$%^) Cuando me uno a estos patrones RegEx, no funciona correctamente cuando la variable incluye caracteres especiales
let text = prompt('add variable name'); let pattern = /^[^0-9]/g; // check if it starts with number let condition = pattern.test(text); if (condition == true) { pattern = /[^a-zA-Z0-9$_]/; //check if it contains special characters (!@#$%^*) except ($ , _) condition = pattern.test(text); if (condition == false) { console.log("Variable name is Valid"); } else { console.log('Variable name Is Not Valid'); //includes special character } } else { console.log('Variable name Is Not Valid'); //starts with number }
La condition
de uso ya es un valor booleano, por lo que puede usar if (condition)
Puede reescribir su código usando un patrón que verifique que la cadena no comience con un dígito, y en la clase de caracteres especifique todos los caracteres permitidos y haga coincidir hasta el final de la cadena $
En este caso, puede acortar los rangos a caracteres de palabra \w
y el signo de dólar $
let text = prompt('add variable name'); let pattern = /^(?!\d)[\w$]+$/; let condition = pattern.test(text); if (condition) { console.log("Variable name is Valid"); } else { console.log('Variable name Is Not Valid'); }