javascript - 如何编写名为 validate(z) 的函数,该函数接受字符串作为参数,如果包含 1 "@"符号则返回 true,否则至少返回 1 ".",否则返回 false

标签 javascript string function

我刚刚开始学习函数,感觉挺难的。

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

例如如果 z = "stack@overflow.co.uk"该函数将返回 true。

最佳答案

最简单的方法是使用indexOf()

var s = "foo@foocom";
alert(s.indexOf("@") > -1 && s.indexOf(".") > -1); // Will return false

var s = "foo@foo.com";
alert(s.indexOf("@") > -1 && s.indexOf(".") > -1); // Will return true

编辑:您不能使用多个语句调用indexOf(),您必须为每个字符调用它,然后比较两者都返回> -1。

或者您可以将 match() 与正则表达式一起使用。

var string = 'foo@bar.com';

function validate(z) {
    var num_matches_at_sign = (z.match(/@/g) || []).length;
    var num_matches_dot_sign = (z.match(/./g) || []).length;
    if ( num_matches_at_sign == 1 && num_matches_dot_sign >= 1 ) {
        alert(true);
    } else {
        alert(false);
    };
};

validate(string);

函数和整个代码简单明了。首先我们定义函数 validate(z){...} ,它接受字符串 z 作为参数。然后,我们将出现次数分配给变量 num_matches_at_signnum_matches_dot_sign。要计算字符串中指定字符的出现次数,我们使用 match()方法与正则表达式相结合。在这种情况下,我们的正则表达式是 /@/g,这意味着我们搜索字符(或字母)@g 的出现。是修饰符,表示全局,因此我们查找所有出现的符号@。我们使用相同的原理来查找 . 字符出现的次数。然后我们比较 num_matches_at_sign 完全等于 1 并且 num_matches_dot_sign 等于或大于 1。如果两个条件都为 true(这就是我们使用&& 或逻辑与运算符)函数返回 true,否则返回 false。您可以注意到在 match() 函数附近使用了逻辑 || 运算符,否则我们的 match 方法将返回 null。

关于javascript - 如何编写名为 validate(z) 的函数,该函数接受字符串作为参数,如果包含 1 "@"符号则返回 true,否则至少返回 1 ".",否则返回 false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32187906/

相关文章:

mysql:时间值的数据截断错误:函数

algorithm - 设置值使用逻辑

class - 可以在 C# 中的函数内部使用类吗

javascript - 如何在ajax中为表单操作添加参数?

php - 在页面刷新/关闭之前设置 cookie

javascript - 检测字符串上的 html 标签,获取值并删除 javascript 中 html 标签内的值

python - 检查列表中的任何元素是否以 Python 中的许多前缀中的任何一个开头?

javascript - 单击表格外部时隐藏 div

python - 为不带引号的函数获取字符串参数

c++ - 如何将 std::string 转换为 C 风格的字符串