Toon posts:

[regex] Meerdere expressies samenvoegen

Pagina: 1
Acties:
  • 141 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Hallo,

Ik heb een functie in elkaar geknutselt om de veligheid van een variabele te testen, alleen zijn het nu 3 voorwaardes en dat kan volgens mij ook in 1. Helaas is mijn regex kennis niet zo groot om dit te doen.
In de onderstaande volgorde kijk ik of varname:
-Niet leeg is
-Niet begint met een cijfer
-Alleen getallen en letters bevat
Dan kom ik op de code:
code:
1
2
3
4
   if (Len(varname) EQ 0 OR REFind('^[0-9]', varname) OR REFind('[^a-zA-Z_0-9]', varname))
     return false;
   else
     return true;

Kan dit ook korter?

Bedankt!

  • oh,when?
  • Registratie: April 2000
  • Niet online

oh,when?

...

Op vrijdag 11 januari 2002 12:09 schreef Jorrit het volgende:
Hallo,

Ik heb een functie in elkaar geknutselt om de veligheid van een variabele te testen, alleen zijn het nu 3 voorwaardes en dat kan volgens mij ook in 1. Helaas is mijn regex kennis niet zo groot om dit te doen.
In de onderstaande volgorde kijk ik of varname:
-Niet leeg is
-Niet begint met een cijfer
-Alleen getallen en letters bevat
volgens mij staat deze verkeerd ( moet naar /14 ) maar goed:

Welke taal werk je in?

Ik zou een deel zonder regular expressions oplossen, ben er zelf ook niet zo'n held maar goed:

- check strlen, als deze groter is dan 0 dan
- check first character op numeric door substr(str,0,1)
- moet dat niet zoiets zijn als ^[0-9,a-z]$ ? nogmaals ik ben geen regex held, maar ergens in die richting..

HTH :)

"You're only as good, as what you did last week."


  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 29-08 19:47

Bosmonster

*zucht*

vaag taaltje.. was dat?

  • Tom
  • Registratie: Juni 1999
  • Niet online

Tom

Ik move em naar /14... past ie wat beter denk ik zo :)

Verwijderd

Topicstarter
Dit is voor coldfusion, maar Regular Expressions worden door veel talen ondersteund, vandaar dat ik alles in een regular expression wil hebben.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<cfscript>
//programma testje
function issafevarname (varname) {
   if (Len(varname) EQ 0 OR REFind('^[0-9]', varname) OR REFind('[^a-zA-Z_0-9]', varname))
     return false;
   else
     return true;
}

</cfscript>
<cfoutput>
<cfif issafevarname("a2a_")>
Ja! veilig voor variabele<br>
<cfelse>
Nee! NIET veilig voor variabele<br>
</cfif>
</cfoutput>

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

Jorrit: Kan dit ook korter?
Waarom wil je dit korter? Alles in 1 regex ofzo?

iets van
code:
1
/^[a-zA-Z][a-zA-Z0-9_]+$/

bijvoorbeeld?
Bedankt!
graag gedaan :P

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


Verwijderd

Topicstarter
Bijna goed:
code:
1
/^[0-9][a-zA-Z0-9_]+$/

Je bent mijn held voor vandaag! ;)
Nu alleen het stringlengte probleem nog!

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

Op vrijdag 11 januari 2002 15:59 schreef Jorrit het volgende:
Bijna goed:
code:
1
/^[0-9][a-zA-Z0-9_]+$/

Je bent mijn held voor vandaag! ;)
Nu alleen het stringlengte probleem nog!
euh :? nou moettie beginnen met een getal ;)

even samenvattend:
• string moet beginnen met a-z, A-Z of underscore (_)
• Daarna x aantal characters (a-z A-Z 0-9 of underscore)
• lengte mag niet meer zijn dan 32 (?)
code:
1
/^[a-zA-Z_][a-zA-Z0-9_]{0,31}$/

zoiets?

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


Verwijderd

Topicstarter
Nee het klopt wel
^[0-9] Houdt in dat het niet met een getal mag beginnen
[a-zA-Z0-9_] Houdt in dat er na het begin een karakter, getal of underscore mag staan.

Klopt toch allemaal dan of ben ik nou gek? :?

  • tomato
  • Registratie: November 1999
  • Niet online
Jorrit: ^[0-9] Houdt in dat het niet met een getal mag beginnen
^[0-9] houdt in dat het met een cijfer moet beginnen.
^[^0-9] houdt in dat het met iets anders dan een cijfer moet beginnen.

Let op, dit laatste is iets anders dan dit:

^(?![0-9]) houdt in dat het niet met een cijfer mag beginnen.

Let dus altijd goed op je woorden met dit soort dingen >:)
[a-zA-Z0-9_] Houdt in dat er na het begin een karakter, getal of underscore mag staan.
[a-zA-Z0-9_] houdt in dat er een letter, cijfer, of underscore moet staan.

Tussen moeten en mogen bestaat ook een subtiel verschil :*
Klopt toch allemaal dan of ben ik nou gek? :?
:X ;)

Verwijderd

Topicstarter
Okee, ik hou m'n mond! ;)
Pagina: 1