ホームページ > バックエンド開発 > C++ > 正規表現で文字長制限を強制するにはどうすればよいですか?

正規表現で文字長制限を強制するにはどうすればよいですか?

Patricia Arquette
リリース: 2025-01-26 19:56:10
オリジナル
358 人が閲覧しました

How Can I Enforce Character Length Limits in Regular Expressions?

正規表現で文字長を施行

正規表現には、長さの制限が必要なことがよくあります。 それらがなければ、正規表現は任意の長さの文字列に一致します。 数量詞は解決策のように見えますが(例:{1,15})、文字列全体で直接動作しません。 これは、量子が直前の要素にのみ影響するためです。 たとえば、

この試みは失敗します:

<code class="language-javascript">var test = /^(a-z|A-Z|0-9)*[^$%^&*;:,?()""']*${1,15}/ // Error!</code>
ログイン後にコピー

lookaheadソリューション

正しいアプローチは、肯定的なLookaheadの主張を利用しています:

<code class="language-javascript">^(?=.{1,15}$)[a-zA-Z0-9]*[^$%^&*;:,?()""']*$</code>
ログイン後にコピー

lookahead を理解しています

が鍵です。 この肯定的なLookaheadは、文字列全体(最初から(?=.{1,15}$)から^まで)には1〜15文字($)が含まれていると主張しています。 それは.{1,15} を消費しません。条件をチェックするだけです。 残りのregex [a-zA-Z0-9]*[^$%^&*;:,?()""']*$は、その長さの制約内の許可された文字と一致します。

newlinesの処理

文字列に新しいライン文字が含まれる場合は、より堅牢な文字クラスを使用して、NewLinesを含むキャラクターに一致します。

<code class="language-javascript">^(?=[\s\S]{1,15}$)[a-zA-Z0-9]*[^$%^&*;:,?()""']*$</code>
ログイン後にコピー
ホワイトスペースまたは非白色の文字に一致します。 これにより、マルチライン入力でも長さチェックが正しく機能します。 これは、正規表現で文字の長さの制限を施行するための信頼できる方法を提供します。

以上が正規表現で文字長制限を強制するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート