[PHP] Alleen bepaalde tekens, regex

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

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hallo,

ik ben aan het stoeien met een regex, zodat er alleen bepaalde tekens in de string mogen zitten.

Ik heb nu dit
/^[a-zA-Z0-9_-]+$/
nu mogen alle letters, cijfers, streepje en underscore.

Nu wil ik daar dat spatie bij hebben, maar dan gaat het mis. Er hard een spatie bij typen geeft een fout.
Ik heb gezocht in de search en kwam op :space: uit, maar heb op van allerlei manieren dat erbij gezet, maar krijg telkens een fout.
Oa. deze:
/^[a-zA-Z0-9_-:space:]+$/
/^[a-zA-Z0-9_-[:space:]]+$/
/^[a-zA-Z0-9_-][:space:]+$/
Maar dit werkt dus allemaal niet

Acties:
  • 0 Henk 'm!

  • semicolon
  • Registratie: Mei 2004
  • Niet online
Volgens mij was \s whitespace, je kan t proberen maar ik weet het niet meer 100% zeker.

:D/-<


Acties:
  • 0 Henk 'm!

Verwijderd

Er is een verschil tussen PCRE en POSIX regular expressions. De PCRE functies, die allemaal met preg_ beginnen, zijn over het algemeen uitgebreider en sneller.

Een liggend streepje mag alleen als laatste teken tussen [ en ] voorkomen, tenzij je hem 'escapet'. Dus zet de spatie niet na het liggende streepje, of escape het streepje.

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Wat Cheatah zegt. Dit heeft ermee te maken dat het streepje gebruikt wordt voor ranges, wat je zelf ook gebruikt. :)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • terabyte
  • Registratie: September 2001
  • Laatst online: 06-07 23:08

terabyte

kan denken als een computer

Verder moet het [[:space:]] zijn, niet [:space:] of :space:... tenminste, in de regexen die ik altijd gebruik.

Acties:
  • 0 Henk 'm!

  • Tjark
  • Registratie: Juni 2000
  • Laatst online: 18-09 23:26

Tjark

DON'T PANIC

en let op dat je met a-zA-z niet zaken als éèï, etc vangt!

*insert signature here


Acties:
  • 0 Henk 'm!

  • Wolfboy
  • Registratie: Januari 2001
  • Niet online

Wolfboy

ubi dubium ibi libertas

Lees dit eventjes door: http://www.pcre.org/pcre.txt

Blog [Stackoverflow] [LinkedIn]


Acties:
  • 0 Henk 'm!

  • PrisonerOfPain
  • Registratie: Januari 2003
  • Laatst online: 26-05 17:08
Verwijderd schreef op 07 november 2004 @ 19:35:
Een liggend streepje mag alleen als laatste teken tussen [ en ] voorkomen, tenzij je hem 'escapet'. Dus zet de spatie niet na het liggende streepje, of escape het streepje.
Niet helemaal, de tekens met een bepaalde betekenis worden ook letterlijk genomen als ze verder geen significante betekenis hebben. Daarom kun je zelfs
code:
1
[]]

Schrijven als je alleen een ] moet matchen.
Een bron die ik zelf heel nuttig (en goed) vond om meer over regular expressions te leren was http://regularexpressions.info

Acties:
  • 0 Henk 'm!

  • Wolfboy
  • Registratie: Januari 2001
  • Niet online

Wolfboy

ubi dubium ibi libertas

PrisonerOfPain schreef op 07 november 2004 @ 21:17:
[...]

Niet helemaal, de tekens met een bepaalde betekenis worden ook letterlijk genomen als ze verder geen significante betekenis hebben. Daarom kun je zelfs
code:
1
[]]

Schrijven als je alleen een ] moet matchen.
Hoezo niet helemaal?
Wat Cheatah zegt is voor 100% waar, hij zegt dat [-] wel werkt, en [a-] en [-a] ook maar [a-b] niet omdat hij het dan niet meer als los streepje ziet.
Dan zou je het dus [a\-b] moeten doen.

En wat jij zegt klopt gedeeltelijk, dat hangt maar van de andere tekens af die eromheen staan.
In het geval dat het niets anders kan zijn dan gaat het goed, maar om een beetje zeker van je zaak te zijn zou ik liever escapen.

[ Voor 4% gewijzigd door Wolfboy op 07-11-2004 22:32 ]

Blog [Stackoverflow] [LinkedIn]

Pagina: 1