正規表現を使用して入力文字列の長さと特殊文字を制御する
この記事では、正規表現を使用して入力文字列を検証するという課題について説明し、特に文字列の長さの制限と特殊文字の除外に焦点を当てます。 アンカーに量指定子を使用する一般的なアプローチでは、全体の長さを正確に制限できないことがよくあります。
解決策: 前向き先読みアサーション
最も効果的な解決策は、正規表現の先頭で肯定的な先読みアサーションを利用することです。
<code>^(?=.{1,15}$)[a-zA-Z0-9]*[^$%^&*;:,?()""']*$</code>
この式を分解してみましょう:
^
: 文字列の先頭と一致します。(?=.{1,15}$)
: これは肯定的な先読みアサーションです。 (?= ... )
は先読み構文です。 .{1,15}
は、任意の文字 (.
) に 1 回から 15 回 ({1,15}
) と一致します。 $
は文字列の末尾に一致します。 このセクション全体では、文字列の長さが 1 ~ 15 文字であることを、一致する文字をまったく消費せずに表明します。[a-zA-Z0-9]*
: 0 個以上の英数字と一致します。[^$%^&*;:,?()""']*
: 指定された特殊文字のセットにないである 0 個以上の文字と一致します。$
: 文字列の末尾と一致します。先読みが重要な理由
アンカー (^
および $
) で量指定子を直接使用しても、直前の要素が変更されるだけなので効果がありません。ただし、先読みアサーションは、式の残りの部分が評価される前に文字列全体の長さをチェックし、正確な長さの制御を保証します。
潜在的な問題への対処
.
を [sS]
に置き換えて、改行を含む任意の文字と一致させます。{1,15}
数量子は、必要に応じて最大文字列長を簡単に調整します。この改善されたアプローチは、正規表現を使用して入力文字列を検証し、効果的に長さを制限し、同時に特殊文字を制限するための堅牢かつ正確な方法を提供します。
以上が特殊文字を制限しながら、正規表現を使用して入力文字列の長さを制限するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。