まず、ソースについて軽くコメントを。
// ;を忘れている。なくても動くが、つけるべき。
var test
// strってなんですか? おそらくGmailの本文が入った文字列が入っているのだと思いますが。
var sub = str.indexOf("xxxx"||"yyyy"||"zzzz"||"ffff"||"dddd");
if(sub != -1){test = '一致';}
strというのが別に与えられているとして、
確かにこれでは期待通り動作しません。
こうした場合はindexOfを使うのではなく、例えばmatchを使って
var test;
var sub = str.match(/xxxx|yyyy|zzzz|ffff|dddd/);
// matchの場合、該当なしならばnullを返すため、変更
if(sub !== null){test = '一致';}
と書くと、期待通り動くと思います。
追記
禁止文字がたくさんあるとき、上では対応するのが大変になるので、
そういうときにはindexOfを使ったほうがよいかもしれません。例えばこのような関数を書いてみました。
/**
mailTextに、forbiddenWords中に指定された文字列が一つでもあればtrue,一つもなければfalseを返す
@param {string} mailText メール本文の文字列
@param {Array<string>} forbiddenWords 禁止文字の配列
**/
function isIncludedForbiddenWords(mailText,forbiddenWords){
return forbiddenWords.some(function(word){return (mailText.indexOf(word) !== -1);});
}
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2017/08/28 01:27
退会済みユーザー
2017/08/28 01:28