如果我输入18,则会显示其他if的以下答案。
var age = prompt("please enter your age")
var letters = /^[A-Za-z]+$/;
if (age == 18) {
alert("welcome to our website")
}
if (age > 18) {
alert("welcome to our website")
}
if (age < 18) {
alert("you aren't allowed to visit this website")
window.close()
}
if (age = letters) {
alert("please enter a valid number")
prompt("please enter your age")
}
答案 0 :(得分:1)
好吧,首先,您的测试太多了。如果用户年龄在18岁或18岁以上,您想做同样的事情,则可以将两者结合起来。
由于您只有两个关于年龄的条件和结果,因此您可以将另一个if
测试转换为else
分支,以便仅输入一个测试分支。
但是,您没有针对正则表达式正确测试用户输入。有两种方法可以做到这一点,但是简单的.test()
方法就能解决问题。即使这是进行正则表达式测试的方式,最后一个=
也必须是==
,以便您可以进行比较而不是赋值。
参见下文:
var age = prompt("please enter your age");
// First just test to see if they entered letters or not
if(testInput(age)){
// Some letters were entered...
alert("please enter a valid number");
age = prompt("please enter your age");
testInput(age); // test again
}
// When there are only numbers...
if (age >= 18) {
alert("welcome to our website");
} else {
alert("you aren't allowed to visit this website");
window.close();
}
// This function will accept a string
function testInput(age){
var letters = /^[A-Za-z]+$/;
// And return true or false based on testing the string
// against the regular expression.
return letters.test(age);
}
答案 1 :(得分:0)
function validateAge() {
var age = prompt("please enter your age")
// var letters = /^[A-Za-z]+$/;
// if input will be any other symbol besydes letters&digits no alerts in that case
// \D "not digit" would be better regexp
var notDigit = /^\D+$/;
// you can use 'greater or equal >=' & 'less or equal <='
if (age >= 18) {
alert("welcome to our website")
}
if (age < 18) {
alert("you aren't allowed to visit this website")
window.close()
} // you know regular expressions but not the functhions to work with?
if (age && age.match(notDigit)) {
alert("please enter a valid number")
validateAge()
}
}
validateAge()