Toon posts:

javascript: reg expressions

Pagina: 1
Acties:

Verwijderd

Topicstarter
ok google me al 2 uur suf maar kom er niet uit, daarom bij deze de vraag:

Heb nu huidige code die keurig alleen usernames toelaat met gewone characters, underscores en cijfers (maar niet speciale karakters zoals u-'umlaut' en dergelijke - iets wat veel van mijn internationale bezoekers wel proberen). Wil dezelfde check ergens anders aan toevoegen, maar daar moeten 'spaties' ook mogelijk zijn. Volgens websites moet ik iets van /s /S toevoegen maar dat sorteert tot nu toe geen (juist) effect...
Wie helpt mij verder, aub?
Oftewel, hoe kan ik het onderstaande script zo aanpassen dat spaties (whitespace) ook mogelijk zijn ?

Alvast harstikke bedankt!
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<script language="JavaScript">
function checkUsername(element) {

    re = /^\w+$/;

    if(element.value== "") {
      alert("Error: Username cannot be blank!");
      element.select();
      element.focus();
      return false;
    }

    if(!re.test(element.value)) {
      alert("Error: Username must contain only letters, numbers and underscores!");
      element.select();
      element.focus();
      return false;
    }

     return true;

}
</script>

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 14:38
[ \w] :?

[ Voor 6% gewijzigd door Soultaker op 14-10-2006 02:36 ]


Verwijderd

Topicstarter
ok thanks, maar hoe kan ik in dat geval karakters als 'ü' uitsluiten ? ik wil alleen (26) standaard alfabet karakters, niet tig unicode varianten :)

Verwijderd

/^[A-Za-z0-9_ ]+$/

Dit moet je toch echt wel uit een willekeurige tutorial kunnen halen hoor. Je weet zelfs al dat dit soort dingen "regular expression" heet.

Verwijderd

Topicstarter
Yes!!! :*)
Echt superbedankt, op een of andere manier heb ik die willekeurige tutorial niet kunnen vinden, heb tig examples geprobeerd maar dit is de eerste die werkt zoals ik bedoel, nogmaals bedankt cheatah!!!

  • Annie
  • Registratie: Juni 1999
  • Laatst online: 25-11-2021

Annie

amateur megalomaan

/^\w|\s+$/

deze zou ook nog wel moeten werken, afaik.

Today's subliminal thought is:


  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

Annie schreef op zaterdag 14 oktober 2006 @ 09:13:
/^\w|\s+$/

deze zou ook nog wel moeten werken, afaik.
Nee, je zegt hier dat een username moet beginnen met een 'word'-karakter of moet eindigen op een whitespace-karakter, en wat er tussenin staat maakt dus niet uit :P
Note dat \s niet enkel een spatie matched maar ook o.a. tab, carriage return, formfeed en linefeed, en dat \w ook karakters met diakrieten matched itt [a-z]

Intentionally left blank


  • krvabo
  • Registratie: Januari 2003
  • Laatst online: 12-02 17:25

krvabo

MATERIALISE!

/s bestaat niet in javascript en dat is imho een groot gemis.
Bestaande modifiërs:
* /g enables "global" matching. When using the replace() method, specify this modifier to replace all matches, rather than only the first one.
* /i makes the regex match case insensitive.
* /m enables "multi-line mode". In this mode, the caret and dollar match before and after newlines in the subject string.

/s zorgt er voor dat "." over meerdere regels matched (Wat dus handig is als je een bepaalde textarea wilt checken.)

Pong is probably the best designed shooter in the world.
It's the only one that is made so that if you camp, you die.


  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Waar hoort mijn topic?

[PRG] >> [WEB]

(Hoewel, granted, mijn gevoel me ook meer zegt dat dit in PRG hoort ;) )

[ Voor 41% gewijzigd door RobIII op 14-10-2006 13:04 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

krvabo schreef op zaterdag 14 oktober 2006 @ 12:50:
/s zorgt er voor dat "." over meerdere regels matched (Wat dus handig is als je een bepaalde textarea wilt checken.)
Je begint nu ineens over modifiers terwijl wij het over de \s predefined characterclass hadden.
Daarnaast omschrijf je de s-modifier verkeerd; officieel is het DOT_MATCH_ALL wat wil zeggen dat met de s-modifier de .-characterclass ook newlines (en carriage returns) matched (afhankelijk van implementatie matched de . soms wel en soms niet de carriage return).

Dat is vaak eenvoudig op te lossen door in plaats van de . een alternatieve character-class te gebruiken zoals [\s\S] of door zoiets te doen: (.|[\r\n]) of (.|\s) :)

Intentionally left blank


  • krvabo
  • Registratie: Januari 2003
  • Laatst online: 12-02 17:25

krvabo

MATERIALISE!

crisp schreef op zaterdag 14 oktober 2006 @ 13:24:
[...]

Je begint nu ineens over modifiers terwijl wij het over de \s predefined characterclass hadden.
Verwijderd schreef op zaterdag 14 oktober 2006 @ 02:26:
Volgens websites moet ik iets van /s /S toevoegen maar dat sorteert tot nu toe geen (juist) effect...
Daarnaast omschrijf je de s-modifier verkeerd; officieel is het DOT_MATCH_ALL wat wil zeggen dat met de s-modifier de .-characterclass ook newlines (en carriage returns) matched
krvabo schreef op zaterdag 14 oktober 2006 @ 12:50:
/s zorgt er voor dat "." over meerdere regels matched (Wat dus handig is als je een bepaalde textarea wilt checken.)
een dot in JS matched alles behalve een newline of carriage return. Met /s-modifier matched ie die dus wel. Volgens mij klopt mijn omschrijving weldegelijk :?

Pong is probably the best designed shooter in the world.
It's the only one that is made so that if you camp, you die.


  • MBV
  • Registratie: Februari 2002
  • Laatst online: 12:42

MBV

dat de TS een typo heeft gemaakt door /s te typen ipv \s, daar kan je als gevorderde programmeur toch wel doorheen lezen? Het heeft hier niks met newlines te maken :)
offtopic:
om newlines te matchen zou je toch ook zoiets kunnen doen? [.$]*

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

krvabo schreef op zaterdag 14 oktober 2006 @ 13:52:
[...]
een dot in JS matched alles behalve een newline of carriage return. Met /s-modifier matched ie die dus wel. Volgens mij klopt mijn omschrijving weldegelijk :?
De omschrijving dat een dot daarmee "over meerdere regels matched" vond ik wat vaag en je zou het daarmee makkelijk kunnen verwarren met de multiline-modifier ;)
Overigens in IE matched de dot wel carriage returns.
MBV schreef op zaterdag 14 oktober 2006 @ 13:57:
offtopic:
om newlines te matchen zou je toch ook zoiets kunnen doen? [.$]*
Jij omschrijft nu een characterclass die ofwel een letterlijke punt matched of een dollar-teken ;)

[ Voor 5% gewijzigd door crisp op 14-10-2006 16:05 ]

Intentionally left blank


  • MBV
  • Registratie: Februari 2002
  • Laatst online: 12:42

MBV

en ik maar denken dat $ de end-of-line is...

  • user109731
  • Registratie: Maart 2004
  • Niet online
MBV schreef op zaterdag 14 oktober 2006 @ 19:42:
en ik maar denken dat $ de end-of-line is...
Is het ook, maar niet in een character class ;) De . (punt) is ook niet speciaal in een character class, net als vrijwel alle andere tekens. :)

[ Voor 16% gewijzigd door user109731 op 14-10-2006 19:48 ]


  • Annie
  • Registratie: Juni 1999
  • Laatst online: 25-11-2021

Annie

amateur megalomaan

crisp schreef op zaterdag 14 oktober 2006 @ 12:48:
[...]

Nee, je zegt hier dat een username moet beginnen met een 'word'-karakter of moet eindigen op een whitespace-karakter, en wat er tussenin staat maakt dus niet uit :P
Note dat \s niet enkel een spatie matched maar ook o.a. tab, carriage return, formfeed en linefeed, en dat \w ook karakters met diakrieten matched itt [a-z]
Na ja, dan zet je er haakjes omheen. Niet zo pietje precies uithangen :P

Punt van de \s moet ik je geven. Maar dat van die diakrieten, weet je dat zeker?

Today's subliminal thought is:


  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

Annie schreef op zaterdag 14 oktober 2006 @ 23:31:
[...]

Na ja, dan zet je er haakjes omheen. Niet zo pietje precies uithangen :P

Punt van de \s moet ik je geven. Maar dat van die diakrieten, weet je dat zeker?
Nee, dat van die diakrieten weet ik niet zeker en na een kort testje blijkt dat ook niet te kloppen. \w is echt equivalent aan [A-Za-z0-9_] en niet meer; eigenlijk is de benaming van deze characterclass dan ook fout - het staat voor 'word-characters', maar in mijn optiek is è ook een 'word-character'. Duidelijk een standaard gemaakt door Amerikanen ofzo :P

Intentionally left blank

Pagina: 1