我正在使用indexOf来查看电子邮件是否包含特定文本以外的任何内容。
例如,我想检查一封电子邮件是否不包含"usa"在@符号之后,并显示错误消息。
我首先拆分文本并删除@符号之前的所有内容:
var validateemailaddress = regcriteria.email.split('@').pop();
然后,检查文本是否不包含"usa":
if(validateemailaddress.indexOf('usa')){
$('#emailError').show();
}
上面的支票似乎有些不对劲。它的工作-我可以输入一个电子邮件,如果它不包括'usa',那么错误信息将显示。
无论如何,当我添加了一个额外的检查,比如如果电子邮件不包含&;can&;,那么无论如何都会显示错误消息。
如下:
if(validateemailaddress.indexOf('usa') || validateemailaddress.indexOf('can')){
$('#emailError').show();
}
如上所述,无论电子邮件是否包含文本,错误信息都将显示。
我想做的就是检查电子邮件是否包含'usa'或'can',如果没有,则显示错误信息。
我怎样才能使它工作?
这是一个简单的JavaScript函数,用于检查电子邮件地址是否包含'usa'或'can'。
function emailValid(email, words) {
// Get the position of @ [indexOfAt = 3]
let indexOfAt = email.indexOf('@');
// Get the string after @ [strAfterAt = domain.usa]
let strAfterAt = email.substring(indexOfAt + 1);
for (let index in words) {
// Check if the string contains one of the words from words array
if (strAfterAt.includes(words[index])) {
return true;
}
}
// If the email does not contain any word of the words array
// it is an invalid email
return false;
}
let words = ['usa', 'can'];
if (!emailValid('abc@domain.usa', words)) {
console.log("Invalid Email!");
// Here you can show the error message
} else {
console.log("Valid Email!");
}
也可以这样做,使用includes:
const validateEmailAdress = (email) => {
const splittedEmail = email.split('@').pop();
return (splittedEmail.includes('usa') || splittedEmail.includes('can'))
}
console.log("Includes usa: ", validateEmailAdress("something@gmail.usa"))
console.log("Includes can: ", validateEmailAdress("something@gmail.can"))
console.log("Does not includes: ", validateEmailAdress("something@gmail.com"))
有几种方法可以检查字符串是否包含子字符串。
String.prototype.includes
'String'.includes(searchString); // returns true/false
String.prototype.indexOf
// returns values from -1 to last postion of string.
'String'.indexOf(searchString);
// In combination with ~ this can work similar to includes()
// for strings up to 2^31-1 byte length
// returns 0 if string is not found and -pos if found.
~'String'.indexOf(searchString);
在正则表达式的帮助下
// substring must be escaped to return valid results
new RegExp(escapedSearchString).test('String'); // returns true/false if the search string is found
'String'.match(escapedSearchString); // returns null or an array if found
所以总的来说,你可以使用所有的方法,比如:
if ('String'.function(searchString)) {
// 'String' includes search String
} else {
// 'String' does not include search String
}
或者indexOf:
if ('String'.indexOf(searchString) > -1) {
// 'String' includes search String
} else {
// 'String' does not include search String
}
// OR
if (~'String'.indexOf(searchString)) {
// 'String' includes search String
} else {
// 'String' does not include search String
}
我相信这个正则表达式匹配就是你要找的
System.out.println (myString.matches("() @(。)美国(. *)"));