Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 编写电子邮件验证函数_Javascript_Validation - Fatal编程技术网

Javascript 编写电子邮件验证函数

Javascript 编写电子邮件验证函数,javascript,validation,Javascript,Validation,编写一个名为validate的函数,该函数接受单个sting参数。当且仅当字符串至少包含一个点时,函数应返回true。正好有一个@符号。 例如 如果你真的需要答案,在这里 var website = "x.John@example.com" function validate(){ var hasOneAtSymbol = false, hasDots = false; for(var i in website){ if(website[i] === "@

编写一个名为validate的函数,该函数接受单个sting参数。当且仅当字符串至少包含一个点时,函数应返回true。正好有一个@符号。 例如


如果你真的需要答案,在这里

var website = "x.John@example.com"
function validate(){
    var hasOneAtSymbol = false,
    hasDots = false;
    for(var i in website){
        if(website[i] === "@"){
            if(hasOneAtSymbol){
                return false;
            }else{
                hasOneAtSymbol = true;
            }
        }else if(website[i] === "."){
            hasDots = true;
        }
    }
    if(hasOneAtSymbol && hasDots){
        return true;
    }else{
        return false;
    }
}

即使这是家庭作业,我也会帮你的

有几种方法可以解决这个问题。大多数情况下,当您尝试验证某些输入时,使用。但是,我还可以想到另外两种方法:使用或手动循环组成字符串的字符数组

让我们看看indexOf函数,它应该是非常直接的

在Javascript中,检查字符串时没有包含函数。这有点烦人,但是您可以使用indexOf函数创建自己的函数

function contains(original_string, string_to_search_for) {
    // if `location_of_search_string` is 0 or greater, we have a match.
    var location_of_search_string = original_string.indexOf(string_to_search_for);
    if (location_of_search_string >= 0) {
        return true;
    } else {
        return false;
    }
}
因此,从MDN开始,str.indexOfsearchValue[,fromIndex]函数返回调用字符串对象中第一次出现指定值的索引,从fromIndex开始搜索。如果找不到该值,则返回-1

好的,如果indexOf返回非负值,那么我们的字符串包含我们正在搜索的字符串

那么,让我们编写一个包含函数

function contains(original_string, string_to_search_for) {
    // if `location_of_search_string` is 0 or greater, we have a match.
    var location_of_search_string = original_string.indexOf(string_to_search_for);
    if (location_of_search_string >= 0) {
        return true;
    } else {
        return false;
    }
}
到目前为止和我在一起?现在我们可以稍微清理一下代码,这样就不会有那么多行了。实际上,我们可以让它成为一行。注意如果我们的if语句为true,我们希望返回true吗?我们可以通过返回if语句的计算结果来利用这一点。我们也不需要将结果存储在变量中

好的,现在我们有

function contains(original_string, string_to_search_for) {
    return (original_string.indexOf(string_to_search_for) >= 0);
}
好的,看看我们的字符串是否有。在它中,我们可以运行:

var email = 'hello@example.com';
contains(email, '.'); //returns true
现在,如果我们对一个"与"符进行运算,如果它至少有一个"与",那么它将返回true,但我们只需要一个。所以,我们需要另一个函数

function contains(original_string, string_to_search_for) {
    // if `location_of_search_string` is 0 or greater, we have a match.
    var location_of_search_string = original_string.indexOf(string_to_search_for);
    if (location_of_search_string >= 0) {
        return true;
    } else {
        return false;
    }
}
有几种方法可以做到这一点,但让我们继续使用indexOf。还记得我们可以传递indexOf的fromIndex参数吗?让我们用这个。在我们找到第一个@之后,让我们开始在该位置之后寻找另一个符号。如果我们找不到,那么我们只有一个

好的!所以,我们可以做一个函数不,validateEmailemail如下:

只是为了好玩,如果你想用正则表达式解决这个问题,我可能会这样做:

function validateEmailWithRegExp(email) {
    return /^[^@]*@[^@]*$/.test(email) && /^(?:.*\.)+.*$/.test(email);
}

一句俏皮话很有趣!这几乎不是你能使用的最优化的reg exp,但它能让你的工作按职位完成。

听起来像是学校的作业。阅读文档,并向我们展示一些代码!这是一条单行线!这听起来很像是一个家庭作业/面试问题——如果是这样的话,应该谨慎地承认并披露这一事实,因为的用户并不是真的在为他们做其他人的工作。展示你的尝试和你的困境。小提示:试着看看。@Jakub Hampl似乎有很多麻烦,可以用一个简单的正则表达式来完成。。。但是为这样一个简单的任务学习正则表达式对于OP来说可能太麻烦了。就可读性而言,这篇文章写得很好。但是,从概念上讲,它可以改进:您可以利用一些现有的JavaScript字符串函数,使for循环变得不必要,更不用说正则表达式的可能性了,但这完全是另一回事。谢谢!我漏掉了另外一句话,谢谢你抽出时间,非常感谢!!!我喜欢保持我的代码简单易读。。。这就是我所关心的:好的,非常感谢,这真的很好地解释了它,我现在有一个非常冗长的函数。
function validateEmailWithRegExp(email) {
    return /^[^@]*@[^@]*$/.test(email) && /^(?:.*\.)+.*$/.test(email);
}