Kom ihåg mig?
Home Menu

Menu


Nu blir jag galen igen (regexp i javascript)

Ämnesverktyg Visningsalternativ
Oläst 2009-02-20, 15:12 #1
oddholst oddholst är inte uppkopplad
Medlem
 
Reg.datum: Aug 2007
Inlägg: 127
oddholst oddholst är inte uppkopplad
Medlem
 
Reg.datum: Aug 2007
Inlägg: 127
Hej.

Jag försöker få en matchningskontroll i javascript om en sträng uppfyller ett visst krav:

Jag har testat med denna och varianter i match():
/\d+;(select|function|url|menu|back|close);[0-9a-zA-Z_\s\.,\?!]+;\d*/

De strängar som den skall kontrollera kan se ut så här:
- Ett tal som är 0 eller mer (obligatoriskt)
- Ett ;-tecken (obligatorisk)
- Ett av sex nyckelord (select|function|url|menu|back|close) (obligatorisk)
- Ett ;-tecken (obligatorisk)
- En text som kan innehålla alla bokstäver, siffror, understreck, mellanslag, punkt, kommatecken, utropstecken eller frågetecken. (ej obligatoriskt)
- Ett ;-tecken (obligatoriskt)
- Ett tal från 0 och uppåt (ej obligatoriskt)

Exempel på strängar
"15;select;Test 7!;4208"
"22;back;Tillbaka;"
"22;close;Stäng;"
oddholst är inte uppkopplad   Svara med citatSvara med citat
Oläst 2009-02-20, 22:33 #2
turborakettis avatar
turboraketti turboraketti är inte uppkopplad
Medlem
 
Reg.datum: Feb 2008
Inlägg: 76
turboraketti turboraketti är inte uppkopplad
Medlem
turborakettis avatar
 
Reg.datum: Feb 2008
Inlägg: 76
Dina exempel matchar ditt regexp, sånär som på den sista där "ä" ställer till det. Vad är problemet?

Kanske vill du ha med ^ och $ först resp sist i ditt regexp om strängen måste matcha exakt.

En annan grej: Texten som ej är obligatorisk, borde det inte vara "*" istället för "+"? Med "+" måste strängen vara minst ett tecken.
turboraketti är inte uppkopplad   Svara med citatSvara med citat
Oläst 2009-02-21, 12:06 #3
martines avatar
martine martine är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Mar 2005
Inlägg: 767
martine martine är inte uppkopplad
Mycket flitig postare
martines avatar
 
Reg.datum: Mar 2005
Inlägg: 767
I [] behöver du inte escapa de flesta tecken.
martine är inte uppkopplad   Svara med citatSvara med citat
Oläst 2009-02-21, 12:50 #4
oddholst oddholst är inte uppkopplad
Medlem
 
Reg.datum: Aug 2007
Inlägg: 127
oddholst oddholst är inte uppkopplad
Medlem
 
Reg.datum: Aug 2007
Inlägg: 127
Nu har jag testat följande regexp i en regexp-testare:
REGex TESTER v1.5.3
Citat:
^[0-9]+;(select|function|url|menu|back|close){1};[\w\s?!._åäöÅÄÖ]+;[0-9]*$
Det fungerar precis som jag vill ha det i testaren men jag får bara null när jag använder det i javascriptet:
thestring.match("^[0-9]+;(select|function|url|menu|back|close){1};[\w\s?!._åäöÅÄÖ]*;[0-9]*$");
Och jag har även testat med "/"-tecken först och sist men i regex-testaren så funkar det inte med dessa tecken.

Edit:
Tro't eller ej, men nu har jag fått det att fungera, tror jag:
"^[0-9]+;(select|function|url|menu|back|close){1};[a-zA-Z0-9 ?!._åäöÅÄÖ]*;[0-9]*$"
"\w\s" verkade inte funka som jag trodde det skulle göra.
oddholst är inte uppkopplad   Svara med citatSvara med citat
Oläst 2009-02-21, 13:46 #5
turborakettis avatar
turboraketti turboraketti är inte uppkopplad
Medlem
 
Reg.datum: Feb 2008
Inlägg: 76
turboraketti turboraketti är inte uppkopplad
Medlem
turborakettis avatar
 
Reg.datum: Feb 2008
Inlägg: 76
Jag skulle testat:

thestring.match(/^\d+;(select|function|url|menu|back|close);[^;]*;\d*$/)

- [0-9] eller \d ska inte spela roll
- {1} ska inte behövas
- En sträng som termineras med ; kan matchas med "[^;]*;" (eller ".*?;")
turboraketti är inte uppkopplad   Svara med citatSvara med citat
Oläst 2009-02-21, 18:08 #6
martines avatar
martine martine är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Mar 2005
Inlägg: 767
martine martine är inte uppkopplad
Mycket flitig postare
martines avatar
 
Reg.datum: Mar 2005
Inlägg: 767
Citat:
Originally posted by oddholst@Feb 21 2009, 13:50
thestring.match("^[0-9]+;(select|function|url|menu|back|close){1};[\w\s?!._åäöÅÄÖ]*;[0-9]*$");
Felet är att du använder en sträng - det är ett regexp.

/regexp/

"sträng"
martine är inte uppkopplad   Svara med citatSvara med citat
Svara


Aktiva användare som för närvarande tittar på det här ämnet: 1 (0 medlemmar och 1 gäster)
 

Regler för att posta
Du får inte posta nya ämnen
Du får inte posta svar
Du får inte posta bifogade filer
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG]-kod är
HTML-kod är av

Forumhopp


Alla tider är GMT +2. Klockan är nu 12:37.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson
 
Copyright © 2017