regex
beste leden,
M`n regex is niet al te goed, dus vandaar dat ik hier kom:
Ik heb nu dit:
Waarom geeft deze een false terug bij valSafeString("Merijn"); ?
Of eigenlijk elke willekeurige tekst. Door de bomen zie ik het bos even niet meer..
Iemand een idee?
M`n regex is niet al te goed, dus vandaar dat ik hier kom:
Ik heb nu dit:
Code (php)
1
2
3
4
5
6
2
3
4
5
6
<?
function valSafeString ($str)
{
return (!preg_match("/^([^a-zA-Z0-9_-])+$/i", $str)) ? false : true;
}
?>
function valSafeString ($str)
{
return (!preg_match("/^([^a-zA-Z0-9_-])+$/i", $str)) ? false : true;
}
?>
Waarom geeft deze een false terug bij valSafeString("Merijn"); ?
Of eigenlijk elke willekeurige tekst. Door de bomen zie ik het bos even niet meer..
Iemand een idee?
Gesponsorde koppelingen:
Die ^ tussen je blokhaakjes betekent "alles behalve". Dus dat stukje [^a-zA-Z0-9_-] matcht alles behalve a-zA-Z0-9_-.
Die ronde haakjes heb je trouwens niet nodig. Die zijn om matches te onthouden, zodat je er later naar terug kan referen via $1 etc in de expressie zelf.
Die ronde haakjes heb je trouwens niet nodig. Die zijn om matches te onthouden, zodat je er later naar terug kan referen via $1 etc in de expressie zelf.
Gewijzigd op 12/02/2011 16:31:35 door Jelmer rrrr
ja dat snap ik, maar kijk: ik wil dus checken of die [^ regex] niet matched tegen de expressie, de eerste ^. Als dit dus een error geeft, krijg je die false terug.
Maar het stomme is, als ik dit doe: "/^([-a-z0-9_-])+$/i"
matched hij wel alles, zolang ik geen hoofdletters op geef.
Stomme regex shit.
Maar het stomme is, als ik dit doe: "/^([-a-z0-9_-])+$/i"
matched hij wel alles, zolang ik geen hoofdletters op geef.
Stomme regex shit.
Jep, maar beginnen met ^ en eindigen met $ betekent dat heel $str moet voldoen aan de expressie. Laat je die twee weg, dan zoekt hij ook binnen $str en hoeft maar een deel te voldoen.
Dus of zo en als de expressie dan matcht, zit er een illegaal karakter in
Of zo en als de expressie dan matcht, bestaat de invoer uit alleen één of meer legale karakters. (immers die plus betekent match 1 of meer keer)
Dus of zo en als de expressie dan matcht, zit er een illegaal karakter in
Of zo en als de expressie dan matcht, bestaat de invoer uit alleen één of meer legale karakters. (immers die plus betekent match 1 of meer keer)
Hmmmz ik ga het uitproberen dan! bedankt alvast :)



