我怎么能写一个名为validate(z)的函数,它以字符串作为参数&如果包含1 "@"的象征,至少1

How can i write function called validate(z) which takes a string as argument & return true if contain 1 "@" symbol & at least 1 "." & false otherwise

本文关键字:quot 包含 如果 至少 参数 怎么能 validate 函数 字符串 一个      更新时间:2023-09-26

我刚刚开始学习函数,发现它相当困难。

我学过一些不同的函数,但我从来没有做过这样的函数。

如何编写一个名为validate(z)的函数,该函数以字符串作为参数,如果它包含一个@符号和至少一个点.,则返回true,否则返回false。

if z = "stack@overflow.co.uk"函数将返回true

对于这样一个简单的需求,Regex似乎有些多余。我会写这样的

function validate(z) {
    var hasDots = z.indexOf('.') !== -1,
        firstAt = z.indexOf('@'),
        lastAt = z.lastIndexOf('@');
    return hasDots && firstAt !== -1 && firstAt === lastAt;
}

听起来您正在寻找的是电子邮件验证功能。这些比你想象的要复杂得多。您必须验证长度和格式。这里有一个在我使用(相当复杂的)正则表达式语句的所有实现中对我来说都工作得很好。

function validateEmail(v) {
    var r = new RegExp("[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:'.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?'.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?");
    return (v.match(r) == null) ? false : true;
}

可以使用正则表达式

function validate(z) {
    var re = /^(['w-]+(?:'.['w-]+)*)@((?:['w-]+'.)*'w['w-]{0,66})'.([a-z]{2,6}(?:'.[a-z]{2})?)$/i;
    return re.test(z);
}

对于点,使用indexOf在输入中搜索字符:

function contains(z, c) { 
  return z.indexOf(c) !== -1; 
}

要检查单个@,您可以输入

function contains_one(z, c) {
  var first = z.indexOf(c);
  var last  = z.lastIndexOf(c);
  return first !== -1 && first == last;
}
function validate(z) {
  return contains_one(z, '@') && contains(z, '.');
}

如果您喜欢使用regexp:

function validate(z) {
  return /^[^@]*@[^@]*'.[^@]*$/.test(z);
}

这表示请求一个非at符号序列,后面跟着一个at符号,后面跟着一个非at符号序列,后面跟着一个点,后面跟着一个非at符号序列。你可能想调整一下。例如,它坚持点必须在@号的右边。此外,它还允许点紧跟在@号之后,或者紧跟在输入的末尾。