Java Ellenőrizze a kis- és nagybetűk, a speciális karakterek és a számjegyek karakterláncát

1. Áttekintés

Ebben a gyors bemutatóban bemutatjuk, hogyan tudunk ellenőrizze, hogy a Húr az alábbiak legalább egyikét tartalmazza: nagybetű, kisbetű, számjegy vagy speciális karakter Java-ban.

2. A reguláris kifejezések használata

Az ellenőrzés egyik módja a reguláris kifejezések használata. A szabályos kifejezések megismerése érdekében olvassa el ezt a cikket.

Először határozzuk meg a reguláris kifejezést az összes szükséges karaktercsoporthoz. Mivel a reguláris kifejezések rögzítettek, nem szükséges minden egyes futásnál értékelni őket, ezért összeállítjuk őket, mielőtt összehasonlítjuk őket:

privát statikus végleges minta [] inputRegexes = új minta [4]; statikus {inputRegexes [0] = Pattern.compile (". * [A-Z]. *"); inputRegexes [1] = Minta.kompile (". * [a-z]. *"); inputRegexes [2] = Minta.kompile (". * \ d. *"); inputRegexes [3] = Pattern.compile (". * [` [e-mail védett] # $% ^ & * () \ -_ = + \ | \ [{\]};: '\ " , /?]. * ");}

Ezenkívül létre kell hoznunk egy egyszerű módszert, amelyet használni fogunk annak tesztelésére Húr megfelel a feltételeknek:

privát statikus logikai isMatchingRegex (String input) {logikai inputMatches = true; for (Minta inputRegex: inputRegexes) {if (! inputRegex.matcher (input) .matches ()) {inputMatches = hamis; }} return inputMatches; }

2.1. Egységes reguláris kifejezés

Az előző példa meglehetősen olvasható, és lehetővé teszi számunkra, hogy szükség esetén csak néhány mintát használjunk könnyen. De abban az esetben, ha csak az összes feltétel teljesítésével törődünk, sokkal hatékonyabb egyetlen szabályos kifejezést használni.

Így nincs szükségünk statikus mondatra az összes többszörös kifejezés inicializálásához és összeállításához. Emellett nem lenne szükség az összes ismétlésére, és meg kellene találni, hogy melyik meccs és melyik nem.

Csak annyit kell tennünk, hogy kijelentjük a regexünket:

Karakterlánc: regex = "^ (? =. *? \ p {Lu}) (? =. *? \ p {Ll}) (? =. *? \ d)" + "(? =. *? [`[email protected] # $% ^ & * () \ -_ = + \ | \ [{\]};: '\", /?]). * $ ";

Ezután állítsa össze és hasonlítsa össze:

@Test public void givenSingleRegex_whenMatchingCorrectString_thenMatches () {String validInput = "Ab3;"; assertTrue (Pattern.compile (regex) .matcher (validInput) .matches ()); }

Néhány dologra érdemes felhívnunk a figyelmet a rendszeres kifejezésünkkel kapcsolatban.

Először a pozitív nézőszámot (? = X) minden karaktercsoportra. Ez azt jelenti, hogy elvárjuk x a karakterlánc kezdete után található ( ^) az egyezés érdekében, de nem akarunk a végére menni x, inkább a sor elején akarunk maradni.

Egy másik dolog, amit észre kell venni, hogy ezúttal nem használtuk [A-Z] vagy [a-z] betűcsoportoknál, de \ p {Lu} és \ p {Ll} helyette. Ezek megegyeznek bármilyen betűvel (esetünkben nagybetűvel és kisbetűvel) bármilyen nyelvről, nemcsak angolról.

3. A Core Java használata

Nézzük meg, hogyan hajthatjuk végre ugyanazt az ellenőrzést, ha nem akarunk reguláris kifejezéseket használni. Ki fogjuk használni karakter és Húr osztályok és módszereik annak ellenőrzésére, hogy az összes szükséges karakter szerepel-e a Húr:

privát statikus logikai ellenőrzőString (karakterlánc bevitele) {String specialChars = "~` [e-mail védett] # $% ^ & * () -_ = + \ | [{]};: '\ ", /?"; char currentCharacter ; logikai számPresent = hamis; logikai felsőCasePresent = hamis; logikai alsóCasePresent = hamis; logikai specialCharacterPresent = hamis; for (int i = 0; i <input.length (); i ++) {currentCharacter = input.charAt (i); if ( Character.isDigit (currentCharacter)) {numberPresent = true;} else if (Character.isUpperCase (currentCharacter)) {upperCasePresent = true;} else if (Character.isLowerCase (currentCharacter)) {lowerCasePresent = true;} else if (specialChars. tartalmazza (String.valueOf (currentCharacter))) {specialCharacterPresent = true;}} visszatérési számPresent && upperCasePresent && lowerCasePresent && specialCharacterPresent;}

Itt néhány dolgot meg kell jegyeznünk. Alapvető gondolat, hogy iterálunk a sajátunkon keresztül Húr és ellenőrizze, hogy a karakterek a kívánt típusúak-e. Használva karakter osztályban, könnyen ellenőrizhetjük, hogy egy bizonyos karakter számjegyű, nagybetűs vagy kisbetűs-e.

Sajnos nincs hasonló módszer, amely megmondaná, ha az egyik speciális karakterrel van dolgunk. Tehát ez azt jelenti, hogy más megközelítést kell alkalmaznunk.

Hoztunk létre egy Húr minden szükséges speciális karaktert tartalmaz, majd ellenőrizzük, hogy tartalmazza-e a saját karakterünket.

4. Következtetés

Ebben a rövid cikkben bemutattuk, hogyan lehet ellenőrizni, hogy a Húr kötelező karaktereket tartalmaz. Az első esetben normál kifejezéseket használtunk, míg a másodikban az alapvető Java osztályokat használtuk ki.

Szokás szerint a teljes forráskód megtalálható a GitHubon.