Javaの正規表現に基づくユーザー名フィールド検証練習
ユーザー名検証ルールの概要
多くのアプリケーションシナリオでは、ユーザー名の形式は、データの正規化とセキュリティを確保するために特定のルールに従う必要があります。このチュートリアルでは、次の4つの一般的なユーザー名検証ルールに焦点を当てます。
- 長さの制限:ユーザー名は4〜25文字(境界を含む)でなければなりません。
- 開始文字:ユーザー名は、文字(ケースの非感受性)から始める必要があります。
- 許可された文字セット:ユーザー名には、文字(AZ、AZ)、数字(0-9)、およびアンダースコア(_)のみを含めることができます。
- 終了文字:ユーザー名はアンダースコア(_)で終了できません。
正規表現構造と解析
上記の検証ルールを正確に実装するには、強力な正規表現を構築する必要があります。元の試行された正規表現 ^[a-za-z] [a-za-z0-9 _](?
以下は、上記のすべてのルールとそれらの詳細な分析に準拠する推奨される正規表現です。
^[a-za-z] \ w {3,24} $(?<p>または、文字セットのより正確な制御が必要な場合:</p><pre class="brush:php;toolbar:false"> ^[a-za-z] [a-za-z0-9 _] {2,23} [a-za-z0-9] $
主に最初のより簡潔な正規表現を解析します: ^[a-za-z] \ w {3,24} $(?
- ^:文字列の開始位置を一致させます。これにより、式全体が文字列内のどのサブストリングではなく、文字列の先頭から一致することが保証されます。
- [A-ZA-Z]:大文字または小文字の英語の文字を一致させます。これは、「文字から始めなければならない」というルールを満たすためです。
- \ w {3,24}:\ wは、[a-za-z0-9_]、つまり、文字、数字、またはアンダースコアと一致する、[a-za-z0-9_]に相当する事前定義された文字クラスです。 {3,24}は量子であり、前の\ w文字が3〜24回表示されなければならないことを示します。
- 長さの考慮事項:最初の文字[A -ZA -Z]は1文字と一致しているため、ユーザー名の合計長さが4〜25文字の場合、残りの文字は25-1 = 24文字の最大値と4-1 = 3文字の最小値を一致させる必要があります。したがって、{3,24}は、文字列全体の長さが4〜25の間であることを保証します。
- $:文字列の終了位置を一致させます。これにより、式全体が文字列の最後に一致し、部分的な一致が防止されます。
- (?否定的な後方線のアサーションです。現在のマッチング位置の前の文字がアンダースコア_ではないかどうかを確認します。 $の前であるため、これは、文字列の最後の文字がアンダースコアではないかどうかをチェックすることを意味します。これは、「アンダーラインを終わらせることはできない」というルールを完全に満たしています。
Java実装の例
Javaでは、string.matches()メソッドを使用して、正規表現のマッチングを容易にすることができます。この方法は、文字列全体を指定された正規表現に一致させようとします。
Java.util.scannerをインポートします。 java.util.regex.patternをインポートします。 public class profilevalidator { /** *ユーザー名が指定されたルールに準拠していることを確認します。 *ルールは次のとおりです。 *1。長さは4〜25文字です。 * 2。文字から始めなければなりません。 * 3。文字、数字、およびアンダースコアのみが含まれています。 *4。アンダースコアで終わることはできません。 * * @paramユーザー名のユーザー名の文字列検証する。 * @return return "true"ユーザー名がすべてのルールに準拠している場合。それ以外の場合は「false」を返します。 */ public static string validateSusername(string username){ //推奨正規表現// ^[a-za-z] \ w {3,24} $(?<p><strong>テストケース:</strong></p>
- 「u__hello_world123」:長さは17で、文字から始まり、英数字のアンダースコアのみが含まれ、アンダースコアで終わりません。
- 予想される出力:true
- 「AA_」:長さは3(4-25に満足していません)で、アンダースコアで終わります。
- 予想出力:false
- 「ユーザー」:長さは4で、文字から始まり、文字のみが含まれ、アンダースコアで終わりません。
- 予想される出力:true
- 「1user」:手紙から始めません。
- 予想出力:false
- 「A」:長さは1です(4-25に満足していません)。
- 予想出力:false
- 「longusername_veryveryveryvery」:長さは25を超えます。
- 予想出力:false
メモとベストプラクティス
- 入力前処理:正規式のマッチングを実行する前に、文字列の最初と端で白人文字を削除するために、ユーザー入力文字列のTRIM()メソッドを呼び出すことをお勧めします。これにより、ユーザーが誤ってスペースに入ることによって引き起こされる障害の一致を避けることができます。
- string.matches()vs pattern.matcher(): the string.matches()メソッドは、pattern.compile(regex).matcher(input).matches()の単純化された形式です。シングルマッチの場合、2つのパフォーマンスの違いは大きくありません。ただし、複数の一致に同じ正規表現を多数の文字列に使用する必要がある場合は、パターンオブジェクト(パターンパターン= pattern.compile(regex);)をプレシャイルし、pattern.matcher(input).matches()は、一致するたびに通常の式を再コンパイルするオーバーヘッドを回避するため、より効率的です。
- 戻りタイプ:例では、BalidateUsernameメソッドは、文字列タイプの「True」または「False」を返します。実際のアプリケーションでは、ブールタイプを返すことをお勧めします。これにより、発信者は文字列を解析するのではなく、論理的な判断にブール値を直接使用できます。例:public static boolean validateSusername(string username)。
- 文字セットの考慮事項: \ w文字クラスには、一部の正規表現エンジンにはASSASCII非コード文字が含まれている場合があります。ユーザー名がASCIIの文字、数字、およびアンダースコアのみを含むために厳密に必要である場合、[a-za-z0-9_]を使用して文字セットを明示的に指定する方が安全です。 2番目の正規表現 ^[a-za-z] [a-za-z0-9 _] {2,23} [a-za-z0-9] $は良い例です。これは、(?
上記の方法と例を通じて、開発者はJavaアプリケーションでユーザー名フィールドの正規表現検証を正確かつ効率的に実装することができ、それによりデータの品質とシステムの堅牢性が向上します。
以上がJavaの正規表現に基づくユーザー名フィールド検証練習の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undress AI Tool
脱衣画像を無料で

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

Java.Timeパッケージのクラスを使用して、古い日付とカレンダーのクラスを置き換えます。 2。LocalDate、LocalDateTime、LocalTimeを通じて現在の日付と時刻を取得します。 3。of()メソッドを使用して特定の日付と時刻を作成します。 4.プラス/マイナスメソッドを使用して、時間を不正に増加させて短縮します。 5. ZonedDateTimeとZoneIDを使用して、タイムゾーンを処理します。 6。DateTimeFormatterを介したフォーマットおよび解析の文字列。 7.インスタントを使用して、必要に応じて古い日付型と互換性があります。現代のJavaでの日付処理は、java.timeapiを使用することを優先する必要があります。

JDBCトランザクションを正しく処理するには、最初に自動コミットモードをオフにし、次に複数の操作を実行し、結果に応じて最終的にコミットまたはロールバックする必要があります。 1。CONN.SETAUTOCOMMIT(FALSE)を呼び出して、トランザクションを開始します。 2。挿入や更新など、複数のSQL操作を実行します。 3。すべての操作が成功した場合はconn.commit()を呼び出し、データの一貫性を確保するために例外が発生した場合はconn.rollback()を呼び出します。同時に、リソースを使用してリソースを管理し、例外を適切に処理し、接続を密接に接続するために、接続の漏れを避けるために使用する必要があります。さらに、接続プールを使用してセーブポイントを設定して部分的なロールバックを達成し、パフォーマンスを改善するためにトランザクションを可能な限り短く保つことをお勧めします。

依存関係の指示(di)isadesignpatternwhere objectsreceivedenciesiesedternally、setter、orfieldinoffiction.2.springframeworkusessaNnotationslike@component、@service、@autowiredwithjava Basedconfi

Pre-formanceTartuptimeMemoryusage、quarkusandmicronautleadduetocopile-timeprocessingingandgraalvsupport、withquarkusoftentylightbetterine serverlessシナリオ。

setupamaven/gradleprojectwithjax-rsdependencieslikejersey; 2.createarestresourceingnotationssuchas@pathand@get; 3.configuretheapplicationviaapplicationubclassorweb.xml;

パフォーマンス分析ツールを使用してボトルネックを見つけ、開発とテスト段階でVisualVMまたはJProfilerを使用し、生産環境で非同期財産を優先します。 2。オブジェクトの作成を削減し、オブジェクトを再利用し、StringBuilderを使用して文字列のスプライシングを置き換え、適切なGC戦略を選択します。 3.コレクションの使用を最適化し、シーンに応じて初期容量を選択し、プリセットします。 4.同時性を最適化し、同時コレクションを使用し、ロックの粒度を低減し、スレッドプールを合理的に設定します。 5. JVMパラメーターを調整し、合理的なヒープサイズと低遅延のゴミコレクターを設定し、GCログを有効にします。 6.コードレベルでの反射を避け、ラッパークラスを基本タイプに置き換え、初期化を遅延させ、最終と静的を使用します。 7。JMHと組み合わせた連続性能テストと監視

Mavenは、Javaプロジェクト管理と建設の標準ツールです。答えは、POM.xmlを使用してプロジェクト構造、依存関係管理、建設ライフサイクルの自動化、プラグイン拡張機能を標準化するという事実にあります。 1. pom.xmlを使用して、GroupID、artifactid、バージョン、依存関係を定義します。 2。MVNCLEAN、コンパイル、テスト、パッケージ、インストール、展開などのマスターコアコマンド。 3.依存関係管理と除外を使用して、依存関係バージョンと競合を管理します。 4.マルチモジュールプロジェクト構造を通じて大規模なアプリケーションを整理し、親POMによって均一に管理されます。 5。

thejvmenablesjavaの「writeonce、runany where "capabilitybyexcuting byteCodeThethermainComponents:1。theClassLoaderSubSystemloads、links、andinitializes.classfilesusingbootStrap、拡張、およびアプリケーションクラスローロー、
