入力必須にする

<input type="text" name="hoge" required>

文字数制限

<input type="text" name="hoge" required minlength="5">
<input type="text" name="hoge" required maxlength="20">

文字数を制限しても、0文字での送信はできてしまうので、入力必須にしたい場合にはrequiredを指定する必要があります。

パターン制限

<!-- メールアドレス -->
<input type="email" name="hoge" required pattern="[a-z0-9._%+-]+@[a-z0-9.-]+\\.[a-z]{2,3}$">

<!-- 電話番号(ハイフンなし) -->
<input type="tel" name="hoge" required pattern="^0\\d{9,10}$">

<!-- URL -->
<input type="url" name="hoge" required pattern="https?://.+">

パターンを指定しても、空文字での送信はできてしまうので、入力必須にしたい場合にはrequiredを指定する必要があります。

ファイルの拡張子を制限

<input type="file" name="image" accept="image/png,image/jpeg,image/gif">