0

フォームがあり、文字と数字を要求する必要があります。私が見たすべてのソリューションは、単に文字と数字のみを許可し、両方を必要としません.

私はこの正規表現を持っています:/^[0-9a-zA-Z]+$/どちらか一方を許可します。どうすればこれを要件にすることができますか。つまり、テキストには少なくとも数字が含まれている必要があります。

ありがとう、友よ。

4

1 に答える 1

3

これを分解するには、文字と数字の少なくとも 2 文字が必要です。コードでは、英数字の可能性から始めます。文字\wも許可されているため、使用していません。_グループには、数字の前の文字、または文字の前の数字のいずれかを検索する or があります。次に、必要なグループの後に、それが英数字でもあるものが存在するかどうかを確認します。

/^[A-Za-z0-9]*([A-Za-z][0-9]|[0-9][A-Za-z])[A-Za-z0-9]*$/i

推奨事項として、フォームを検証する際には、Javascript のみのアプローチではなく、サーバー側の言語を最前線の防御として使用することを常にお勧めします。理由:

  1. 誰かが Javascript を無効にできる
  2. サーバーを悪意のある攻撃 (SQL または XSS インジェクション) から保護する必要がある
  3. ハンドラーに直接リンクすることで、誰かがフォームを完全にバイパスできます (有効なリファラーを必要としない場合)。
  4. Lynx などの一部のブラウザーは Javascript を使用しないため、画面読み取りデバイスを使用する必要がある人にとってはユーザー フレンドリーではありません。
于 2013-06-22T06:42:05.377 に答える