JSP303データ検証
(自動設定) 設定ファイルに debug=true を設定すると、処理列に設定されている内容が有効で、有効でないことが確認できます。
@Conditional 派生アノテーション (Spring アノテーション バージョンのネイティブ @Conditional 関数)
機能: @Conditional で指定された条件は、コンポーネントをコンテナーに追加する前に満たされる必要があり、構成内のすべてのコンテンツが有効になります。
非常に多くの自動構成クラスが特定の条件下で有効になる必要があります。つまり、非常に多くの構成クラスをロードしましたが、すべてが有効になるわけではありません。
1. @validatedを利用してSpringbootのデータを検証することができ、データが異常であれば一律に例外をスローすることで例外センターによる統一的な処理を容易にします。私たちの名前が電子メール形式のみをサポートできるように、ここにメモを書きましょう。
@Component //Bean の登録 @ConfigurationProperties(prefix = "person") @Validated //データ検証 public class Person { @Email (message="電子メール形式エラー") //名前は電子メール形式である必要があります private String name; }
実行結果: デフォルトのメッセージ [有効な電子メール アドレスではありません];
データ検証を使用して、データの正確性を確認できます。
2. 共通パラメータ
@NotNull(message="名前を空にすることはできません") private String userName; @Max(value=120,message="チェックできない最大年齢は 120 です") private int age; @Email(message="メール形式エラーです") private String email; Null check @Null オブジェクトが null かどうかを検証 @NotNull オブジェクトが null ではないか、長さ 0 の文字列はチェックできないかどうかを検証 @NotBlank 制約文字列が Null かどうか、および制約文字列の長さがチェックされるかどうかをチェックしますトリミングされた文字列は 0 より大きい (文字列の場合のみ、先頭と末尾のスペースが削除されます) @NotEmpty は制約要素が NULL か EMPTY かを確認します Booelan は @AssertTrue を確認して Boolean オブジェクトが true かどうかを確認します @AssertFalse は Boolean オブジェクトが true かどうかを確認しますオブジェクトは false 長さのチェック @Size(min=, max= ) オブジェクト (配列、コレクション、マップ、文字列) の長さが指定された範囲内であるかどうかを検証します @Length(min=, max=) 文字列は最小値と最大値の間です 日付 チェック オブジェクトと Calendar オブジェクトが現在時刻であるかどうかを確認します Before どうかを検証 します @Future は、Date オブジェクトと Calendar オブジェクトが現在時刻より後であるかどうかを検証します @Pattern は、String オブジェクトが正規表現の規則に従っているかどうかを検証します .... など 。さらに、いくつかのデータ検証ルールをカスタマイズすることもできます
3. 正規表現
正規表現は =="^"== で始まり =="$"== で終わります
(1).チェックデジットの表現
1 数値: ^[0-9]*$
2 n 桁の数字: ^\d{n}$
3 少なくとも n 桁の数値: ^\d{n,}$
400万桁の数値: ^\d{m,n}$
5 ゼロまたはゼロ以外で始まる数字: ^(0|[1-9][0-9]*)$
6 ゼロ以外で始まり小数点以下 2 桁までの数値: ^([1-9][0-9]*)+(.[0-9]{1,2})?$
7 小数点以下 1 ~ 2 桁の正または負の数値: ^(\-)?\d+(\.\d{1,2})?$
8 正の数、負の数、および小数: ^(\-|\+)?\d+(\.\d+)?$
9 小数点以下 2 桁の正の実数: ^[0-9]+(.[0-9]{2})?$
小数点以下 1 ~ 3 桁の 10 個の正の実数: ^[0-9]+(.[0-9]{1,3})?$
11 ゼロ以外の正の整数: ^[1-9]\d*$ または ^([1-9][0-9]*){1,3}$ または ^\+?[1-9][0 -9]*$
12 個のゼロ以外の負の整数: ^\-[1-9][]0-9"*$ または ^-[1-9]\d*$
13 負でない整数: ^\d+$ または ^[1-9]\d*|0$
14 個の正でない整数: ^-[1-9]\d*|0$ または ^((-\d+)|(0+))$
15 負でない浮動小数点数: ^\d+(\.\d+)?$ または ^[1-9]\d*\.\d*|0\.\d*[1-9]\d*| 0? \.0+|0$
16 非正の浮動小数点数: ^((-\d+(\.\d+)?)|(0+(\.0+)?))$ または ^(-([1-9]\d*\ .\ d*|0\.\d*[1-9]\d*))|0?\.0+|0$
(2).チェックキャラクタの表現
漢字 1 文字: ^[\u4e00-\u9fa5]{0,}$
2 英語と数字: ^[A-Za-z0-9]+$ または ^[A-Za-z0-9]{4,40}$
3 長さ 3 ~ 20 のすべての文字: ^.{3,20}$
4 26 文字の英字で構成される文字列: ^[A-Za-z]+$
5 26 個の大文字の英字で構成される文字列: ^[AZ]+$
6 26 個の小文字の英字で構成される文字列: ^[az]+$
7 数字と 26 文字の英字で構成される文字列: ^[A-Za-z0-9]+$
8 数字、26 個の英字、またはアンダースコアで構成される文字列: ^\w+$ または ^\w{3,20}$
9 中国語、英語、アンダースコアを含む数字: ^[\u4E00-\u9FA5A-Za-z0-9_]+$
10 中国語、英語、数字(アンダースコアおよびその他の記号は含まない): ^[\u4E00-\u9FA5A-Za-z0-9]+$ または ^[\u4E00-\u9FA5A-Za-z0-9]{2,20} $
11 ^%&',;=?$\" およびその他の文字を含む文字を入力できます: [^%&',;=?$\x22]+
12 ~を含む文字の入力は禁止です:[^~\x22]+
(3)。特殊要件表現
1 Email地址:^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$
2 优通:[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(/.[a-zA-Z0-9][-a-zA-Z0-9] { 0.62})+/.?
3 インターネット URL:[a-zA-z]+://[^\s]* または ^http://([\w-]+\.)+[\w-]+(/[\w-. /?%&=]*)?$
4 携帯電話番号: ^(13[0-9]|14[5|7]|15[0|1|2|3|5|6|7|8|9]|18[0|1|2| 3 |5|6|7|8|9])\d{8}$
5 つの電話番号 (「XXX-XXXXXXX」、「XXXX-XXXXXXXX」、「XXX-XXXXXXX」、「XXX-XXXXXXXX」、「XXXXXXX」、「XXXXXXXX」): ^(\(\d{3,4}-) | \d{3.4}-)?\d{7,8}$
6 国内電話番号 (0511-4405222、021-87888822):\d{3}-\d{8}|\d{4}-\d{7}
7 ID番号(15桁、18桁): ^\d{15}|\d{18}$
8 短い ID 番号 (数字、x で終わる文字): ^([0-9]){7,18}(x|X)?$ または ^\d{8,18}|[0-9x]{8 ,18}|[0-9X]{8,18}?$
9 アカウントは合法ですか (文字で始まり、5 ~ 16 バイトが使用可能、英数字のアンダースコアが使用可能): ^[a-zA-Z][a-zA-Z0-9_]{4,15}$
10 パスワード (文字で始まり、長さは 6 ~ 18、文字、数字、アンダースコアのみを使用できます): ^[a-zA-Z]\w{5,17}$
11 強力なパスワード (大文字、小文字、数字の組み合わせを含む必要があり、特殊文字は使用できません。長さは 8 ~ 10 です): ^(?=.*\d)(?=.*[az])(?= . *[AZ]).{8,10}$
12 日付形式: ^\d{4}-\d{1,2}-\d{1,2}
13 年間 12 か月 (01~09 および 1~12): ^(0?[1-9]|1[0-2])$
14 月の 31 日 (01 ~ 09 および 1 ~ 31): ^((0?[1-9])|((1|2)[0-9])|30|31)$
15 お金の入力形式:
16 1. 許容できるお金の表現は 4 つあります: 「10000.00」と「10,000.00」、および「セント」なしの「10000」と「10,000」: ^[1-9][0-9]*$
17 2. これは、0 で始まらない任意の数値を意味しますが、文字「0」は渡されないことも意味するため、次の形式を使用します: ^(0|[1-9][0-9]* )$
18 3. 0、または 0 で始まらない数値。先頭に負符号を使用することもできます: ^(0|-?[1-9][0-9]*)$
19 4. これは、0 または負の可能性があり、0 で始まらない数値を意味します。ユーザーは 0 から始めましょう。お金も負にすることはできないので、負の符号も削除します。次に追加する必要があるのは、「可能性を指定する」です。小数部: ^[0-9]+(.[0-9]+)?$
20 5. 小数点の後に少なくとも 1 桁が必要であることに注意してください。そのため、「10.」は渡されませんが、「10」と「10.2」は渡されます: ^[0-9]+(.[ 0 -9]{2})?$
21 6. このように、小数点以下 2 桁であることを規定しています。厳しすぎると思われる場合は、次のようにすることもできます: ^[0-9]+(.[0-9]{1 ,2})?$
22 7. これにより、ユーザーは小数点を 1 つだけ書き込めるようになります。次に、数値内のカンマを考慮する必要があります。これを行うことができます: ^[0-9]{1,3}(,[0-9]{3}) * (.[0-9]{1,2})?$
23 8.1 ~ 3 の数字の後に任意の数のカンマ + 3 つの数字が続きます。カンマは必須ではなくオプションになります: ^([0-9]+|[0-9]{1,3}(,[0- 9]{ 3})*)(.[0-9]{1,2})?$
24 備考: これが最終結果です。空の文字列も許容されると思われる場合は、「+」を「*」に置き換えることを忘れないでください (奇妙です、なぜですか?) 最後に、アンチリバースを削除することを忘れないでください。スラッシュ関数を使用する場合の一般的なエラーはここにあります
25 xml文件:^([a-zA-Z]+-?)+[a-zA-Z0-9]+\\.[x|X][m|M][l|L]$
26 文字の漢字の正規表現: [\u4e00-\u9fa5]
27 個の全角文字: [^\x00-\xff] (漢字を含む、文字列の長さの計算に使用できます (全角文字は 2 としてカウントされ、ASCII 文字は 1 としてカウントされます))
28 空白行の正規表現: \n\s*\r (空白行の削除に使用できます)
29 HTML タグの正規表現: <(\S*?)[^>]*>.*?</\1>|<.*? /> (インターネット上に出回っているバージョンはあまりにもひどいので、上記のものは部分的にしか機能せず、複雑なネストされたタグをまだ処理できません)
30 先頭と末尾の空白文字の正規表現: ^\s*|\s*$ または (^\s*)|(\s*$) (先頭と末尾の空白文字を削除するために使用できます)行(スペースやタブを含む)文字、フォームフィードなど)、非常に便利な式)
31 Tencent QQ 番号: [1-9][0-9]{4,} (Tencent QQ 番号は 10000 から始まります)
32 中国の郵便番号: [1-9]\d{5}(?!\d) (中国の郵便番号は 6 桁です)
33 IP アドレス: \d+\.\d+\.\d+\.\d+ (IP アドレスを抽出する場合に便利)
34 IP アドレス: ((?:(?:25[0-5]|2[0-4]\\d|[01]?\\d?\\d)\\.){3}(?: 25[0-5]|2[0-4]\\d|[01]?\\d?\\d))