Toon posts:

[PHP] Regular expressions

Pagina: 1
Acties:

Verwijderd

Topicstarter
Beste Tweakers,

Ik zit al tijden te prutten om een input te valideren op vreemde tekens zoals: #%$^*&(). Ik wil namelijk een password validator maken die controleerd of het password minimaal in "vreemd" teken bevat.

Maar het wilt maar niet lukken, zou iemand mij misschien hiermee kunnen helpen??

(Of bestaat er misschien ook zoiets voor zulke tekens netals 0-9 en A-Z ??).

  • CyBeR
  • Registratie: September 2001
  • Niet online

CyBeR

💩

kun je mischien uitleggen wat nou precies de bedoeling is?

ik snap niet wat je precies wilt bereiken met je regex namelijk

:?

[edit]
duh, net als ik post edit ie de zooi :P

nou ja, preg_match("/[vreemde_tekens_hier]+/", $var);
als daar true uit komt zit er een in, anders niet :)

All my posts are provided as-is. They come with NO WARRANTY at all.


Verwijderd

Topicstarter
Ja vond mijn eigen verhaal ook al een beetje wazig :D.
Maareh is er ook zoiets om al die vreemde tekens gemakkelijk op te sommen? Net zoals a-z alle kleine letter van het alfabet zijn??

Want anders moet ik al die tekens apart gaan defineren. :(.

Verwijderd

Is het niet handiger (en veiliger) een regex te maken met tekens die wél mogen? Super-simpel natuurlijk, en een stuk begrijpelijker.

  • Tjark
  • Registratie: Juni 2000
  • Laatst online: 14:26

Tjark

DON'T PANIC

Je kunt het omdraaien: kijken of er een teken in zit dat _niet_ normaal is :)
PHP:
1
2
3
4
5
<?
if (eregi("[^a-z0-9]", $string)) {
    echo "Yo: raar teken in string";
}
?>

*insert signature here


  • CyBeR
  • Registratie: September 2001
  • Niet online

CyBeR

💩

mjah, /[\W_]/ zou kunnen denk ik
\W betekent 'alle non-word characters'
oftewel alles behalve 0-9a-zA-Z_

ik denk dat die dus ook een spatie pakt

[edit]
hmm de oplossing van Tjark had ik nog niet eens aan gedacht, dat zou ook kunnen :)
die geeft true als er iets anders in zit dan 0-9a-z (case insensitive)

All my posts are provided as-is. They come with NO WARRANTY at all.


Verwijderd

Topicstarter
Op woensdag 20 februari 2002 00:37 schreef Cheatah het volgende:
Is het niet handiger (en veiliger) een regex te maken met tekens die wél mogen? Super-simpel natuurlijk, en een stuk begrijpelijker.
Nee, want alle tekens mogen, wil alleen zorgen dat er 1 "vreemd" teken in voorkomt ten behoeve van extra security. Aangezien het toch om een server gaat.


[edit]
Cyber en Tjark beide bedankt. Dat van Tjark had ik ook niet aangedacht terwijl het eigenlijk zo simpel is, naja :D. Iedereen moet leren.

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 13:13
Ik kan me voorstellen dat je niet alleen een niet-alfanumeriek teken wil hebben, maar tegelijkertijd OOK geen 'vreemde' tekens zoals newlines en 0-characters wilt toestaan. In dat geval kan je gebruik maken van de POSIX character class 'punct' voor interpunctietekens. Je regular expression wordt dan zoiets:

^[[:print:]]*[[:punct:]][[:print:]]*$
Dit wil dus zeggen, dat je een enkel interpunctieteken wilt zien, al dan niet omgeven door een willekeurig aantal printbare tekens (waaronder zich dus nog meer interpunctietekens kunnen bevinden).

Overigens wordt het gebruik van ranges ('a-z', '0-9', etc.) afgeraden, aangezien de uitwerking ervan afhankelijk is van de locale van het systeem waarop het script draait. Voor de meeste ranges is toch al een goed alternatief in de vorm van een character class (bv. 'lower' en 'digit' voor 'a-z' en '0-9').
Pagina: 1