我刚刚开始学习函数,感觉挺难的。
如何编写一个名为 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_sign
和 num_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/