Go の正規表現によるパスワード検証
正規表現を使用したパスワードの検証は一般的なタスクですが、Go の標準で提供される正規表現パッケージAPI は他の言語とは異なります。したがって、正規表現を使用してパスワード検証関数を構築しようとすると、いくつかの固有の課題に遭遇する可能性があります。
パスワード ルール
提供されたパスワード ルールには次のものが必要です。そのパスワード:
正規表現の制限
残念ながら、Go で 1 つの正規表現を使用してこれらのルールをすべて実装するのは難しいことに注意することが重要です。実現不可能です。これは、Go の正規表現がバックトラッキングをサポートしていないためです。これは、パスワード文字列内に文字が存在し、カウントされていることを確認するために必要です。
代替アプローチ
これらを考慮すると、制限があるため、別のアプローチが必要です。 1 つのオプションは、一連のチェックを使用してこれらのルールを検証するカスタム関数を作成することです。
<code class="go">func verifyPassword(s string) (sevenOrMore, number, upper, special bool) { letters := 0 for _, c := range s { switch { case unicode.IsNumber(c): number = true case unicode.IsUpper(c): upper = true letters++ case unicode.IsPunct(c) || unicode.IsSymbol(c): special = true case unicode.IsLetter(c) || c == ' ': letters++ default: // Handle the case if there are invalid characters. } } sevenOrMore = letters >= 7 return }</code>
この関数は、パスワード文字列を反復処理して、文字、数字、大文字、および特殊文字の存在をチェックします。 。各条件が満たされたかどうかを示すブール値を返します。これらのチェックを組み合わせることで、正規表現に依存せずにパスワード検証ルールを効果的に実装できます。
以上が正規表現をバックトラックせずに Go でパスワードを検証する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。