最近プロジェクトに取り組んでいるときに、数字と文字で構成され、数字と文字の両方が含まれ、長さが 8 ~ 16 桁である必要があるという要件に遭遇しました。実装コードを共有しますので、ご覧ください
ユーザー登録機能のパスワードには次の要件があります: 数字と文字で構成され、数字と文字の両方が含まれている必要があり、長さは次のとおりです。 8 ~ 16 桁にする必要があります。
ニーズを分析するにはどうすればよいですか?スプリット!これがソフトウェア設計の一般的な考え方です。したがって、分割要件は次のとおりです:
1、すべてが数字ではない
2、すべてが文字ではない
3、数字または文字である必要があります
上記 3 つの要件が同時に満たされる限り、それはは次のように書かれます:
^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{8,16}$
個別にコメントしましょう:
^ は行の先頭位置と一致します
(?![0-9]+$) は、その位置の後に数字が続かないことを予測します
(?! [a-zA-Z]+ $) 位置の後に文字が続かないことを予測します
[0-9A-Za-z] {8,16} は 8 ~ 16 個の数字または文字で構成されます
$ の末尾と一致します行の位置
注: (?! xxxx) は、正規表現の負のゼロ幅アサーションの形式であり、この位置の後の文字が xxxx ではないことを示します。
テストの例は次のとおりです:
public class Test { public static void main(String[] args) throws Exception { String regex = "^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{8,16}$"; String value = "aaa"; // 长度不够 System.out.println(value.matches(regex)); value = "1111aaaa1111aaaaa"; // 太长 System.out.println(value.matches(regex)); value = "111111111"; // 纯数字 System.out.println(value.matches(regex)); value = "aaaaaaaaa"; // 纯字母 System.out.println(value.matches(regex)); value = "####@@@@#"; // 特殊字符 System.out.println(value.matches(regex)); value = "1111aaaa"; // 数字字母组合 System.out.println(value.matches(regex)); value = "aaaa1111"; // 数字字母组合 System.out.println(value.matches(regex)); value = "aa1111aa"; // 数字字母组合 System.out.println(value.matches(regex)); value = "11aaaa11"; // 数字字母组合 System.out.println(value.matches(regex)); value = "aa11aa11"; // 数字字母组合 System.out.println(value.matches(regex)); } }
上記は、数字とアルファベットのパスワードを照合するためにエディターが紹介する正規表現です。ご質問がございましたら、お気軽にお問い合わせください。メッセージをいただければ、編集者は全員にすぐに返信します。
以上が数字とアルファベットのパスワードを照合するための正規表現の簡単な分析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。