正規表現を使用したif文
解決したいこと
現在、正規表現を用いてif文を組もうとしていますがなかなか上手くいきません。
if文の内容は
1.文字列に記号が含まれていなければ"OK"
2.文字列に「@」「:」「-」「」のいずれかの記号のみ文字列に含まれていたら"OK"
3.文字列に上の四つ以外の記号のみ文字列に含まれていたら"NG"
4.文字列に「@」「:」「-」「」のいずれかの記号が含むかつ四つ以外の記号のいずれかが含まれていれば"NG"
のようなif文を組みたいです。
下の例通りに判定したいです。
例)
var xxx = new RegExp(/[!"#$%&'()\*\+\-\.,\/:;<=>?@\[\\\]^_`{|}~]/g); //全ての記号対象の正規表現
var reg = new RegExp(/[:\_\-@]/g); //4つの記号対象の正規表現
if (!(xxx.test(str))) { //もし記号がひとつも含まれていない場合は"OK"
console.log("OK");
}
else {
if ((xxx.test(str) && !reg.test(str)) && reg.test(str)) { //4つの対象の記号とそれ以外の記号が両方ある場合は"NG"
console.log("NG");
}
else if (xxx.test(str) && !reg.test(str)) { //それ以外の全ての記号のみある場合は"NG"
console.log("NG");
}
else if (reg.test(str)) { //4つの対象記号しかない場合は"OK"
console.log("OK");
}
}
//(例)文字列
//aaaaa OK
//aaaa@ OK
//aaaa; NG
//aaa;@ NG
//@@@@@ OK
//;;;;; NG
自分で試したこと
検証ツールを用いて文字列の判定→直し→判定・・・無限ループ
0