Förklaring av JavaScript regex önskas

Tråden skapades och har fått 17 svar. Det senaste inlägget skrevs .
1
  • Medlem
  • International user
  • 2007-10-12 13:53

Jag har hitta ett JavaScript regex som ska validera en gilltig e-postadress. Jag förstår ungefär 75% av detta. Skulle någon vänlig själ kunna förklara detta i detalj.
Har någon ett bättre script så är det bra. MEN, det viktiga är att det kan förklaras i detalj.

/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/
  • Medlem
  • Stockholm
  • 2007-10-12 14:15
/^\w+([\.-]?\w+)*

start av rad, följt av ett tecken eller mer, som kan vara fölt av en eller flera grupper av antingen en punk, streck och fler tecken

@

duh..

\w+([\.-]?\w+)*(\.\w{2,3})+$/

ett tecken eller mer, som kan vara fölt av en eller flera grupper av antingen en punk, streck och fler tecken, ett block eller fler innehållande en punkt föld av 2 eller 3 tecken och sist slut på rad.

denna kommer inte att godkänna någon som har en .info domän exempelvis på sin e-post.

  • Medlem
  • International user
  • 2007-10-12 14:26

Tack, nu förtår jag 85%

Jag skrivit ett regex som starkt begränsar filnamn som kan laddas upp i ett webformulär

/^[a-zA-Z0-9(_|\-)]*\.(jpg|psd|xls|pps|ppt|doc|pdf)$/

Det ska bara tillåta tecknen a-z, A-Z, 0-9, _ och -

Har jag träffat rätt? Jag har inte med 'w+' eller '+' men det verkar fungera ändå.

  • Medlem
  • Stockholm
  • 2007-10-12 14:36

Du har - eller _ (inte - & _) men annars är gör det ju som du vill egentligen.

  • Medlem
  • Stockholm
  • 2007-10-12 14:51

orkade inte skriva, utan kopierade det ur manualen för javascript

\w  	 Match any alphanumeric character including the underscore. Equivalent to [a-zA-Z0-9_].  	  
\W 	Match any single non-word character. Equivalent to [^a-zA-Z0-9_].

normalt i regexp har man ju klassarna [:alpha:] etc som gör samma sak.

  • Medlem
  • Mölndal
  • 2007-10-12 15:42

Överlägset bästa regextutorialen och -referensen på nätet:

http://www.regular-expressions.info/

Dock ska man passa sig lite med JavaScript. Dess regexmotor har lite fuffens för sig ibland (följer inte standarden).

  • Medlem
  • Gävle
  • 2007-10-22 11:48

Samtidigt passar jag på att flika in att validera en epostadress är ganska meningslöst. Exempelvis är ju epostadressen dont.spam.me.you.fucking.moron@hotmail.com fullt korrekt, men troligtvis är den fortfarande inte riktig, eller hur?

Det finns en säker metod för att validera epostadresser, och det är att skicka epost till den med confirm-länk i.

  • Medlem
  • Mölndal
  • 2007-10-22 12:34

Jag ser validering av epostadress som ett sätt att hitta misstag som användaren gör, t ex skriver två punkter på raken, eller glömmer domänen.

Att försöka tvinga någon att lämna ifrån sig en adress om de inte vill är bara korkat. Istället bör man fråga sig vilket man föredrar, en besökare utan angiven adress, eller ingen besökare alls.

  • Medlem
  • Piteå
  • 2007-10-23 09:34
Ursprungligen av Wire:

Jag har hitta ett JavaScript regex som ska validera en gilltig e-postadress. Jag förstår ungefär 75% av detta. Skulle någon vänlig själ kunna förklara detta i detalj.
Har någon ett bättre script så är det bra. MEN, det viktiga är att det kan förklaras i detalj.

/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/

3 siffror är ju inte max antal tecken i toppdomäner nuförtiden. Kan vara bra att tänka på

  • Medlem
  • Mölndal
  • 2007-10-23 21:37

My gift to you:

' Denna kommer från http://www.regular-expressions.info/email.html men har ändrats för att tillåta toppdomäner upp till sex tecken långa (MUSEUM, TRAVEL) samt att första tecknet efter @ inte får vara punkt.
	Public Const EpostadressRegex As String = "^[A-Za-z0-9._%-]+@[A-Za-z0-9-][A-Za-z0-9.-]*\.[A-Za-z]{2,6}$"
  • Medlem
  • Gävle
  • 2007-10-23 22:28

Memark, tror inte det där regexet stämmer. Användarnamnet i epostadress kan ju innehålla ett plustecken? Ex så är ju adressen nisse+frasse@mindomain.se en giltig epostadress.

(Detta är ju föresten en viktig sak att tänka på när man ska "låtsas"-verifiera en epostadress mha regex; risken för att inte tillåta epostadresser som faktiskt ÄR giltiga.)

  • Medlem
  • Mölndal
  • 2007-10-24 09:39

Det har du så rätt i. Det blir en avvägning mellan att försöka hjälpa folk att inte skriva fel, och att tillåta allt som är praktiskt möjligt att ha som adress tycker jag.

Det bästa vore ju att ha ett "godkänt-regex" och ett som bara varnar. T ex är ju adresser av typen kalle..svensson@abc.com godkända, men i snudd på 100% av fallen har användaren faktiskt skrivit fel....

  • Medlem
  • Gävle
  • 2007-10-24 10:47

En annan metod för att förhindra att användare skriver fel kan ju vara att låta dem upprepa epostadressen i ett andra fält, och kontrollera att fälten samstämmer. Om det nu är felstavningar man är ute efter att korrigera...

En ytterligare metod jag själv brukar använda för att förhindra felstavningar är att helt enkelt använda en stor teckenstorlek i utvalda fält; stor text gör att användaren enklare upptäcker felstavningar.

  • Medlem
  • Mölndal
  • 2007-10-24 13:11

No offense, men att kräva upprepning stör jag ihjäl mig på, framför allt när det gäller mailadresser. Jag har aldrig någonsin skrivit in adressen två gånger, utan ögonblicket jag ser det andra irriterande fältet, gör jag instinkivt copy/paste.

  • Medlem
  • Gävle
  • 2007-10-24 15:30
Ursprungligen av memark:

No offense, men att kräva upprepning stör jag ihjäl mig på, framför allt när det gäller mailadresser. Jag har aldrig någonsin skrivit in adressen två gånger, utan ögonblicket jag ser det andra irriterande fältet, gör jag instinkivt copy/paste.

Hur mycket skulle ett felaktigt konstruerat regex som inte tillåter dig att ange din korrekta epostadress irritera dig då? Och hur mycket drygare vore det inte att ta sig runt det?

  • Medlem
  • Mölndal
  • 2007-10-24 19:48

Det är väl två separata frågor, men visst, det skulle också irritera mig. Kanske att jag skulle haft viss förståelse för det om jag själv registrerat en mailadress med plustecken i.

  • Medlem
  • Gävle
  • 2007-10-24 20:12
Ursprungligen av memark:

Det är väl två separata frågor, men visst, det skulle också irritera mig. Kanske att jag skulle haft viss förståelse för det om jag själv registrerat en mailadress med plustecken i.

Som uppmärksammats i denna tråd så räcker det med att du har en epostadress på en domän under toppdomänen .info (fler än tre tecken) för att då och då fastna i dåligt utformat regex (tyvärr återanvänds ofta såna här komplicerade men ofta förekommande regex, och misstag upprepas således). När/om man hamnar i den situationen så kanske man önskar att de bara använt ett repetitions-fält istället.

ps - om du istället använder en server-side lösning så kan du parsa filnamnen, ändra tecknen och låta fok ladda upp filer fastän de försöker köra åäö, mellanslag, fan och hans moster. Det tycker jag är bra.

1
Bevaka tråden