有什么方法可以改进这段代码吗?
我想要不以数字开头且不包含特殊字符的变量,例如(!@#$%^(当我加入这些RegEx模式时,当变量包含特殊字符时,它无法正常工作
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
}
使用condition
已经是一个布尔值,因此可以使用if (condition)
您可以使用一种模式来重写代码,该模式检查字符串是否以数字开头,并在字符类中指定所有允许的字符,并匹配到字符串$
的末尾
在这种情况下,您可以将范围缩短为单词字符w
和美元符号$
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');
}