正規表現の文字長の制限
最初の正規表現では文字長に制限はありませんでしたが、15 文字に制限しようとすると量指定子 {1,15} を含む文字を使用すると、エラーが発生しました。これは、量指定子を ^ 文字列開始アンカーなどのアンカーに適用できないためです。
先読みを使用した解決策
文字の長さを効果的に制限するには、次のようにします。文字列の先頭にアンカーされた正の先読みを利用できます:
^(?=.{1,15}$)[a-zA-Z0-9]*[^$%^&*;:,<>?()"]*
この先読みにより、後続の文字列は 1 ~ 15 文字 (数量子 {1,15} で指定) と一致し、一致の直後に終了します。 $ アンカーは文字列の終わりを示します。
限定的な量指定子の回避
次のような正規表現の末尾での量指定子の使用^[a-zA-Z0-9]*[^$%^&*;:,<>?()"]{1,15}$ は、2 番目の文字クラスのみの長さを誤って制限します。 1 ~ 15 文字。文字列全体の長さは制限されません。
先読みの方法Works
先読み (?=.{1,15}$) は、文字列の末尾の改行文字を含む、後続の 1 ~ 15 文字を評価します ($ アンカーのため)。この条件が満たされると、式は true を返し、それ以外の場合は false を返します。
改行の処理シーケンス
入力に改行シーケンスを含めることができる場合は、. ワイルドカードを [sS] 移植可能な任意の文字構成体に置き換えることができます:
^(?=[\s\S]{1,15}$)[a-zA-Z0-9]*[^$%^&*;:,<>?()"]*
以上が先読みを使用して正規表現の文字長を制限するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。