Hei, mistä löytyisi kattava tutoriaali säännöllisille lausekkeille. (putkassa toki yksi).
- Haluaisin tarkistaa etunimen ja sukunimen (3-15 kirjainta, a-ö)
- Sähköpostiosoitteen (@ ja .)
Mielestäni voisi olla joku paikka mistä saa nopeasti näitä lausekkeita. Esim. nimeen välilyönti, väliviiva, minimipituus, ä, ö jne. Nyt käytän näitä HTML5-lomakkeiden PATTERN -atribuutissa.
<label for="FirstName">Etunimi</label> <input type="text" name="FirstName" placeholder="Lauri" id="FirstName" maxlength="15" pattern="^[a-zA-Z]{3,16}$" class="validateLocally" required /> <span class="errors"></span>
Käyttäisin kyllä class-attribuutin sijaan vaikka data-validate-attribuuttia merkitsemään kenttiä, jotka pitää js:llä validoida. Toisaalta kun tarkemmin miettii, niin eikös kaikki kentät pidä validoida? Tai ainakin ne, joilla on html5:n validointiattribuutteja? Silloinhan voit yksinkertaisesti iteroida kaikkien inputtien yli ja katsoa, löytyykö tuollaisia attribuutteja, ja validoida niiden perusteella tai sitten hyväksyä kaikki syötteet.
Puhummeko nyt samasta asiasta. Eli etsin Regular Expressioneja.. esim. tuo etunimi, sukunimi. Toki kaikki pakolliset kentät tarkistetaan. En nyt todellakaan jaksaisi alkaa itse tekemään joka lausetta.
pattern="^[a-zA-Z]{3,16}$"
Ylläoleva toimii muuten, mutta kun laittaa: ä tai ö niin homma ei toimi. Ei myöskään väliviiva koska en sitä osaa tarkistaa. Ajattelin vaan jos jossain olisi hyviä valmiita suomi tarkoitukseen.
Liian tiukka tarkistaminen on typerää. Esimerkiksi millä ihmeen perusteella rajoitat etunimen pituutta ja merkistöä noin? Väestörekisterikeskuksen hausta löytyy paljonkin yksi- ja kaksimerkkisiä etunimiä (mm. Li), ja vastaavasti näyttää löytyvän myös yli 16-merkkisiä nimiä (mm. Risto-Aleksanteri). Monissa nimissä on väliviivojen ja ääkkösten lisäksi erilaisia tarkkeita (mm. Léa) ja vielä harvinaisempia merkkejä (mm. Jørgen).
Siis käytännössä lienee viisainta tarkistaa vain, että kenttä ei ole tyhjä.
Itse kysymykseesi säännöllisistä lausekkeista sanon vain, että opettele tekemään itse tai etsi Googlella jokin sivusto. Kuitenkin mieti myös tarkkaan, oletko ihan täysin varma, että lauseke on tarkoitukseesi oikea.
Tällä sivulla kerrotaan, miten voidaan käyttää regexejä unicoden kanssa. Esimerkiksi nimien tarkistaminen onnistuu seuraavanlaisella regexillä:
^ # Alku [ \p{L} # Kirjaimet \p{Mn} # Aksentit \p{Pd} # Viivat \' # Heittomerkki \x{2019} # Toisenlainen heittomerkki ]+ # Ainakin yksi merkki $ # Loppu
Lähde: http://stackoverflow.com/questions/5963228/regex-for-names-with-special-characters-unicode
Valitettavasti unocode-regexit toimivat vain PHP:ssä, mutteivät html5:ssä tai javascriptissä. Niihin kelvannee esitarkistukseksi esimerkiksi tällainen:
^ [^ # Kaikki merkit, paitsi \d # Numerot \s # Välit ]+ $
Muista kuitenkin tarkistaa käyttäjän lähettämän tiedon validius myös palvelimen päässä!
No kiitos näistä. Taidan sitten tarkistaa vain onko kenttä tyhjä (etunimi, sukunimi). Sähköpostiosoite (@ ja .) ja salasanan kanssa vertaan toisiinsa (salasana syötetään 2 kertaan).
Voisin opetella noita lausekkeita, mutta en ole koskaan niistä pitänyt. Jotenkin todella vastenmielistä kehitellä tuollaisista merkeistä, jotain tarkistuksia.
late kirjoitti:
Taidan sitten tarkistaa vain onko kenttä tyhjä (etunimi, sukunimi).
Huomattavasti realistisempaa. Tosin kaikilla ihmisillä ei ole sukunimeä (esimerkiksi ei useimmilla islantilaisilla). Ihmisen nimi kannattaa lukea yhtenä kenttänä, ellei ole pakko lukea sitä osina (esimerkiksi tietokantaan tarvitaan etu- ja sukunimi erikseen, jolloin on parempi kysyä ne erikseen kuin arpoa käyttäjän syötteestä, mikä osa siinä on mitäkin).
Se, missä muodossa tiedot tarvitaan, riippuu tietojen käyttötarkoituksesta. Ja sehän on lain mukaan kuvattava henkilörekisteriselosteessa.
lainaus:
Sähköpostiosoite (@ ja .) ja salasanan kanssa vertaan toisiinsa (salasana syötetään 2 kertaan).
Sähköpostiosoite kannattaa mieluummin lukea siihen tarkoitetulla HTML5-tavalla, input type=email, kuin ruveta virittämään omaa pattern-määritettä.
Salasanakentän osalta kannattaa miettiä, mitä merkkejä siinä halutaan sallia. Ei ole välttämättä käyttäjäystävällistä sallia kaikenlaista, koska käyttäjä ei ehkä tule ajatelleeksi, että edes ä:n kirjoittaminen kaikenlaisilla näppäimistöillä ei ole triviaalia.
Suurkiitos pointeista. Teen nyt niin että ensin HTML5 "required" tarkistaa onko kenttä tyhjä. Vaaditaan vähintään 1 merkki. Sitten jQuery tarkistaa onko kenttä tyhjä.
- etunimi
- sukunimi
HTML5 (required)
<li> <label for="FirstName">Etunimi</label> <input type="text" name="FirstName" placeholder="Lauri" id="FirstName" maxlength="25" class="validateLocally" required /> <span class="errors"></span> </li>
jQuery (mm. case)
/* validoi kenttä */ function validateField( field ) { var errorText = "", error = false, value = field.val(), siblings = field.siblings( ".errors" ); // tarkista mikä kenttä on lähetetty switch ( field.attr( "name" ) ) { case "FirstName": if ( !validateLength( value, 0 ) ) { error = true; errorText += "Etunimi on liian lyhyt!"; } break; }
Jos joku haluaa olla nimeltään numero 1 niin olkoon sitten. Tärkeintä on että ylläpitäjä voisi tarkistaa käyttäjien rekisteröinnnit ja hyväksyä ne halutessaan.
Sä olet taas kyhäämässä tuollaista bloattipaskafunktiota. Pilko asiat osakokonaisuuksiin ja tee niitä paljon kehuttuja pieniä ja yksinkertaisia funktioita.
Tässäpä mun pikainen räpellykseni validointiin: http://jsfiddle.net/wSmvb/1/
Disclaimer: Tuossa ei ole tavoiteltu vähäisimmässäkään määrin selainyhteensopivuutta eikä integraatiota natiivin html5-validoinnin kanssa.
Harjoittelen vasta JavaScriptiä ja jQuerya. Eli tällä hetkellä yritän saada validoinnin vain toimimaan. Mutta olet oikeassa tulevaisuudessa jokainen erilainen tarkistus voisi olla oma funktionsa, kaiketi?
Sähköpostiosoitteen validointi on muutenkin vähän kyseenalaista. mikä estää käyttäjää fabrikoimasta sähköpostiosoitetta, tai kirjoittamaan jonkun muun osoitetta?
imho, ainut varma tapa varmistaa henkilön sähköposti, on lähettää confirmation viesti kirjoitettuun osoitteeseen, oli se sitten validi e-mail tai ei.
Syötteiden tarkistaminen ei ole vain hyökkäysten ja bottien seulomista vaan myös osa käytettävyyttä. Rekisteröintivaiheessa olisi aika perseestä, jos käyttäjä olisikin syöttänyt sähköpostiosoitteekseen maikki.mehilainen@gmail.
ylläolevan viestini tarkoitus oli, että pelkällä validoinnilla rekisteröintivaiheessa ei voida taata sitä, että sähköposti itsessään on validi ks. henkilölle, vaikka osoite teknisesti olisikin oikein.
Millä tavoin varmistusviestin lähettäminen ei ole validointia?
Kyse taisi olla tekstikentän validoinnista (regexillä harvoin maileja lähetellään) tässä postauksessa. Validointi käsitteenä toki kattaa kaikki varmistukset mitä sitten ikinä tehdäänkään, mutta veikkaisinpa että sinäkin osasit viestin oikeaan asiayhteyteen asettaa.
Samaa validointia molemmat asiat silti ovat. Niiden käyttötarkoitus on eri osa-alueilla, eikä kumpikaan muutu turhaksi toisen takia.
Aihe on jo aika vanha, joten et voi enää vastata siihen.