Javascript检查value是否至少包含2个或更多的单词

javascript check if value has at least 2 or more words

本文关键字:单词 2个 包含 value 检查 是否 Javascript      更新时间:2023-09-26

我有一个字段,您输入您的名字并提交它。我想接收人们的名字和姓氏,要做到这一点,我需要检查值是否包含至少2个单词。这就是我现在使用的,但它似乎不起作用。

function validateNameNumber(name) {
    var NAME = name.value;
    var matches = NAME.match(/'b[^'d's]+'b/g);
    if (matches && matches.length >= 2) {
        //two or more words
        return true;
    } else {
        //not enough words
        return false;
    }
}
str.trim().indexOf(' ') != -1 //there is at least one space, excluding leading and training spaces

简单的解决方案(不是100%可靠,因为"foo   "返回4,正如@cookiemonster提到的):

var str = "Big Brother";
if (str.split(" ").length > 1) {
    // at least 2 strings
}

更好的解决方案:

var str = "Big Brother";
var regexp = /[a-zA-Z]+'s+[a-zA-Z]+/g;
if (regexp.test(str)) {
    // at least 2 words consisting of letters
}

您可以使用String.Split()方法:

function validateNameNumber(name) {
    var NAME = name.value;
    var values = name.split(' ').filter(function(v){return v!==''});
    if (values.length > 1) {
        //two or more words
        return true;
    } else {
        //not enough words
        return false;
    }
}

如果要传递"John Doe"作为名称值,则值将等于{" John ", " Doe"}

http://www.w3schools.com/jsref/jsref_split.asp

Edit:添加过滤器以删除空值。源码:从字符串数组中移除一个空字符串- JQuery

可能不是最好的解决方案(请参阅其他答案),但它显示了如何计算regexp匹配字符串的次数:

function validateNameNumber(name) {
    var nameValue = name.value;
    var regexp = /'b[^'d's]+'b/g;
    var count = 0;
    while (regexp.exec(nameValue)) ++count;
    if (count >= 2) {
        //two or more words
        return true;
    } else {
        //not enough words
        return false;
    }
}

从您的代码片段

更改这一行
var matches = NAME.match(/'b[^'d's]+'b/g);

var matches = NAME.match(/'S+/g);

或this,如果数字应该被排除

var matches = NAME.match(/'b([a-z]+)'b/gi);

侧面(有趣)注意:你的片段工作得很好。检查jsBin

我将通过运行for循环来检查是否有空格。

var correctFormat = false;
for (var i = 0; i = i < name.length; i++) {
    if (name[i] === " ") {
       correctFormat = true;
    }
}
if (correctFormat === false) {
    alert("You entered an invalid name");
    return false;
} else {
    return true;
}

如果名字没有空格,知道名字和姓氏之间有空格,它会alert("You entered an invalid name");