現在、入力に次のそれぞれの少なくとも1つが含まれている必要があるユーザー入力フィールドを検証するための正規表現を作成しようとしています:
- 大文字
- 桁
- 次の特殊文字のいずれか:
& @ ! # +
入力を正しく検証する正規表現を作成しようとしました。
/^([a-zA-Z+]+[0-9+]+[&@!#+]+)$/i.test(userpass);
ただし、入力は正しく検証されません。どうすればいいですか?
現在、入力に次のそれぞれの少なくとも1つが含まれている必要があるユーザー入力フィールドを検証するための正規表現を作成しようとしています:
& @ ! # +
入力を正しく検証する正規表現を作成しようとしました。
/^([a-zA-Z+]+[0-9+]+[&@!#+]+)$/i.test(userpass);
ただし、入力は正しく検証されません。どうすればいいですか?
先読みで正規表現を単純化できます
^(?=.*[&@!#+])(?=.*[A-Z])(?=.*\d).+$
------------- --------- -------
| | |->match only if there's a digit ahead
| |->match only if there's a uppercase alphabet ahead
|->match only if there's any 1 of [&@!#+]
[A-Z]
単一の大文字に一致します
\d
1桁に一致します
または検索を使用
if(input.search(/\d/)!=-1 && input.search(/[&@!#+]/)!=-1) && input.search(/[A-Z]/)!=-1)
これを試して:
/[a-z]/i.test(userpass) && /[0-9]/.test(userpass) && /[&@!#+]/.test(userpass)