0

現在、入力に次のそれぞれの少なくとも1つが含まれている必要があるユーザー入力フィールドを検証するための正規表現を作成しようとしています:

  • 大文字
  • 次の特殊文字のいずれか:& @ ! # +

入力を正しく検証する正規表現を作成しようとしました。

/^([a-zA-Z+]+[0-9+]+[&@!#+]+)$/i.test(userpass);

ただし、入力は正しく検証されません。どうすればいいですか?

4

2 に答える 2

1

先読みで正規表現を単純化できます

 ^(?=.*[&@!#+])(?=.*[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]単一の大文字に一致します

\d1桁に一致します


または検索を使用

if(input.search(/\d/)!=-1 && input.search(/[&@!#+]/)!=-1) && input.search(/[A-Z]/)!=-1)
于 2013-07-02T06:22:29.647 に答える
1

これを試して:

/[a-z]/i.test(userpass) && /[0-9]/.test(userpass) && /[&@!#+]/.test(userpass)
于 2013-07-02T06:17:49.497 に答える