目前我正在尝试为我的网站联系信息编写验证代码,我现在因为一个小问题而被困3小时,但我无法弄清楚。
我出现的问题出现在else元素中的第二个IF元素中,我想在所选字符串中使用正则表达式搜索数字[/ d]和空格[/ s],但我的代码总是只看到一个规则,并忽略了另一个。
我想错误的是我写得不好,但我无法弄清楚如何写。请给我一些指示,我在哪里弄错了。
if (sFirstname == null || sFirstname == "") {
alert("First name must be filled out");
return false;
}
else {
if (/\d/, /\s/i.test(sFirstname)){
alert("Only Letters can be used in First name")
return false;
}
else {
alert("true")
return true;
}
}
答案 0 :(得分:1)
我想改变很多小事:
只要!sFisrtname
不是假的(sFirstname
,""
, 0
就会成立,
null
,undefined
,...)
使用else if ...
代替else { if ... }
。
声明/\d/, /\s/i.test(...)
将评估为:
/\d/,
/\s/i.test(...)
同样:
var a = /\d/;
var b = /\s/i;
a, (b.test(...))
你想要的是/[\d\s]/.test(...)
,如果有的话,这将是正确的
sFirstname
中的数字或空格。您可以考虑更改逻辑操作
而不是op-out,例如:/[^a-zA-Z]/.test(...)
。仅允许a-z和A-Z
我让函数返回错误而不是警告它:
console.log(checkFirstName('John')); // "" (no error)
console.log(checkFirstName('John 42')); // "Only a-z can be used in first name"
这也可以在if语句中使用:
var error = checkFirstName('John');
if (error) {
alert(error);
}
else {
alert('Everything is fine!');
}
功能:
function checkFirstName(sFirstname) {
if (!sFirstname) {
return 'First name must be filled out';
}
else if (/[\d\s]/.test(sFirstname)) {
return 'Only letters can be used in first name';
}
else {
return "";
}
}
答案 1 :(得分:0)
请在您的"中进行测试,如果"条件,在其他地方。此正则表达式仅测试字母,而不测试数字或空格。
var regx = /[^a-zA-Z]+/;
regx.test(firstname);
答案 2 :(得分:0)
更改您的IF语句,如下所示
if (/\d|\s/i.test(sFirstname))