JS ライブラリ validator.js に基づく、文字列バリデーターとサニタイザーのライブラリー
Package validator や govalidator などの人気のある Go ライブラリを使用してみてはいかがでしょうか?どちらのライブラリもよく知られていますが、validatorgo はスタンドアロンの文字列検証に重点を置き、validator.js からインスピレーションを得たカスタマイズ可能なバリデータの広範なコレクションを提供しますが、これらの Go ライブラリはどちらも完全には実装していません。
go-playground/validator および govalidator と比較して、validatorgo がどのように優れているかを次に示します。
直接文字列検証: go-playground/validator は主に、タグを使用して構造体フィールドを検証するために構築されており、JSON または構造体ベースのデータを処理するのに最適です。ただし、ValidatorGo は、構造体タグや追加の設定を必要とせずに、個々の文字列を検証するように設計されていません。
パフォーマンス: go-playground/validator はリフレクションに依存して構造体タグを動的に検査します。リフレクションは強力ですが、特に大規模または複雑なデータ構造が検証される場合にはパフォーマンスのオーバーヘッドが発生する可能性があります。 validatorgo はリフレクションを回避し、パフォーマンスを向上させ、単一フィールドの検証が必要なシナリオでの高速化と効率化を実現します。
私は、Go Web アプリケーションで HTTP リクエストを検証する ginvalidator という別の Go ライブラリの依存関係として機能する validatorgo を作成しました。 Node.js および Express の人気のある検証ライブラリである Express-validator からインスピレーションを得た ValidatorGo は、Go エコシステムのギャップを埋めて、効率的でカスタマイズ可能で簡単な文字列検証を実現します。他のライブラリは過剰であるか、機能が不足しているか、私のユースケースを満たしていなかったので、実用的な解決策を提供するために validatorgo を構築しました。
go get を使用します。
go get github.com/bube054/validatorgo
次に、パッケージを独自のコードにインポートします。
import ( "fmt" "github.com/bube054/validatorgo" )
長い validatorgo パッケージ名を使用することに満足できない場合は、これを行うことができます。
go get github.com/bube054/validatorgo
import ( "fmt" "github.com/bube054/validatorgo" )
以下は、validatorgo パッケージで提供されるバリデーターのリストです。これは、さまざまな文字列形式と型をカバーしており、複数の検証ニーズに柔軟に対応できます。
バリデータ | 説明 |
---|---|
が含まれます | 文字列に指定された部分文字列が含まれているかどうかを確認します。 |
等しい | 文字列が比較文字列と完全に等しいかどうかを検証します。 |
IsAbaRouting | 文字列が有効な ABA ルーティング番号 (米国の銀行口座) であるかどうかを確認します。 |
後のもの | 日付文字列が指定された日付より後であるかどうかを検証します。 |
アルファです | 文字列に文字 (a-zA-Z) のみが含まれていることを確認します。 |
は英数字です | 文字列に文字と数字のみが含まれているかどうかを検証します。 |
IsAscii | 文字列に ASCII 文字のみが含まれているかどうかを確認します。 |
IsBase32 | 文字列が有効な Base32 エンコード値かどうかを確認します。 |
IsBase64 | 文字列が Base64 エンコードであるかどうかを検証します。 |
IsBefore | 日付が指定された日付より前であることを確認します。 |
IsBoolean | 文字列が「true」か「false」かをチェックします。 |
クレジットカードです | 文字列が有効なクレジット カード番号であるかどうかを検証します。 |
通貨です | 文字列が有効な通貨形式であるかどうかを確認します。 |
IsDate | 文字列が有効な日付であるかどうかを検証します。 |
10 進数です | 文字列が有効な 10 進数を表していることを確認します。 |
メールです | 文字列が有効な電子メール アドレス形式であるかどうかを確認します。 |
空です | 文字列が空かどうかを検証します。 |
FQDN です | 文字列が完全修飾ドメイン名であるかどうかを確認します。 |
IsFloat | 文字列が浮動小数点数を表していることを確認します。 |
IsHexColor | 文字列が有効な 16 進カラー (例: #FFFFFF) かどうかを検証します。 |
IIP | 文字列が有効な IP アドレス (IPv4 または IPv6) かどうかを確認します。 |
ISO8601 | 文字列が ISO8601 日付形式であるかどうかを検証します。 |
長さ | 文字列の長さが指定された範囲内にあるかどうかを確認します。 |
IsMimeType | 文字列が有効な MIME タイプであるかどうかを検証します。 |
携帯電話です | 文字列が指定されたロケールで有効な携帯電話番号であるかどうかを確認します。 |
IsMongoID | 文字列が有効な MongoDB ObjectID であるかどうかを検証します。 |
は数値 | 文字列に数字のみが含まれていることを確認します。 |
郵便番号です | 文字列が指定されたロケールで有効な郵便番号であるかどうかを確認します。 |
RFC3339 | 文字列が RFC3339 日付形式であるかどうかを検証します。 |
ナメクジです | 文字列が URL に適しているかどうかを確認します (文字、数字、ダッシュのみ)。 |
IsStrongPassword | 文字列が一般的なパスワード強度要件を満たしていることを確認します。 |
URL | 文字列が URL かどうかを検証します。 |
UUID | 文字列が有効な UUID (バージョン 1 ~ 5) かどうかを確認します。 |
は大文字です | 文字列がすべて大文字であることを確認します。 |
VAT です | 文字列が指定された国で有効な VAT 番号であるかどうかを確認します。 |
一致 | 文字列が指定された正規表現と一致するかどうかを検証します。 |
この表は、validatorgo で現在利用可能なほとんどのバリデーターをカバーするはずです。各バリデーターの詳細な使用法については、パッケージのドキュメントを必ず参照してください。
⚠注意
オプションの構造体 (ポインターまたは非ポインター) を必要とするバリデーターを使用する場合は、常にすべての構造体フィールドの値を明示的に指定してください。
欠落しているフィールドが自動的にデフォルトに設定される validator.js とは異なり、Go は厳密な型を使用します。
これは、欠損値がデフォルトでブール値の場合は false、数値型の場合は 0 になることを意味します。
JavaScript バージョンに慣れている場合、すべてのフィールドを指定しないと、予期しない動作が発生する可能性があります。
例
go get github.com/bube054/validatorgo
import ( "fmt" "github.com/bube054/validatorgo" )
Sanitizer | Description |
---|---|
Trim | Removes whitespace from both ends of the string. |
LTrim | Removes whitespace from the left side of the string. |
RTrim | Removes whitespace from the right side of the string. |
ToLower | Converts the entire string to lowercase. |
ToUpper | Converts the entire string to uppercase. |
Escape | Escapes HTML characters in the string to prevent injection attacks. |
Unescape | Reverts escaped HTML characters back to normal characters. |
NormalizeEmail | Standardizes an email address, e.g., removing dots in Gmail addresses. |
Blacklist | Removes characters from the string that match specified characters or patterns. |
Whitelist | Retains only characters in the string that match specified characters or patterns. |
Replace | Replaces occurrences of a substring with a specified replacement. |
StripLow | Removes control characters, optionally allowing some specified ones. |
TrimSpace | Trims all types of whitespace from both ends of the string. |
ToBoolean | Converts common truthy and falsy values in strings into boolean true or false. |
ToInt | Converts a numeric string into an integer, if possible. |
ToFloat | Converts a numeric string into a floating-point number, if possible. |
これらのサニタイザーは、潜在的に不要な文字や危険な文字を削除または変更することで、データの一貫性とセキュリティを確保するためによく使用されます。
各サニタイザーの具体的な実装と例については、必ず validatorgo の公式ドキュメントを参照してください。
validatorgo は、以下が必要な場合に最適です。
validatorgo を使用すると、文字列検証用に特別に設計されたツールが得られ、Go のスタンドアロンと Web アプリケーションの両方の要件をサポートします。
以上がGo での文字列検証の簡素化: validatorgo の紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。