Javascript RegExp多个规则

时间:2016-06-03 13:42:21

标签: javascript regex

目前我正在尝试为我的网站联系信息编写验证代码,我现在因为一个小问题而被困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;
              }
             }

3 个答案:

答案 0 :(得分:1)

我想改变很多小事:

只要!sFisrtname不是假的(sFirstname""

0就会成立, nullundefined,...)

使用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))