Just nu i M3-nätverket
Jump to content

Regular Expression i .NET Web Pages


KIVA_62

Recommended Posts

Någon här som är duktig på Reguljära utryck? Jag använder mig av .NET web pages färdiga funktion för validering och skulle behöva kontrollera med "Regex" om en adress från ett formulär är en Boxadress, D.v.s. de tre första bokstäverna bildar ordet "Box" ( ej Case Sensitive ) och det fjärde tecknet (när man rensat ev. mellanslag) är en siffra.

 

Jag är rätt ny på detta, så jag skulle även vara tacksam för en bra svensk tutorial för Regujära utryck?

 

 

Link to comment
Share on other sites

Detta verkar fungera.

Regex.IsMatch("Box 2", @"^box.\d{1,5}", RegexOptions.IgnoreCase)

Jag är inte helt hundra på hur web pages färdiga uttryck för validering fungerar. Så du får kanske klippa och klistra lite. Du ser åtminstone hur mönsteret  ser ut.

Känner inte till någon svensk tutorial för regex. Jag brukar använda detta cheat sheet då det följer .NETs regex motor.
http://regexlib.com/CheatSheet.aspx

Link to comment
Share on other sites

Tack för det, testade med nedan, och resultatet blev att allt tolkades som Box adress förutom just om man skriver "Box [siffra]" *Haha*

Så på något sätt så måste jag få en omvänd koll, som ...  if(adress != boxadress). Sen vet jag inte hur man löser Case Sensitive i detta fall.

 

Validation.Add("foretagAdress",

       Validator.Regex(@"^box.\d{1,5}", "- Du kan inte ange en Boxadress"),

       Validator.StringLength(80, 4, "- Ej giltig  adress")

);

 

Jag har hittat en färdig RegEx för validering av epost som ser ut så här

 

Validation.Add("epost",

Validator.Regex(@"^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}$",

"- Ej giltig e-postadress"),

Validator.Required("- E-post adress saknas")

);

Link to comment
Share on other sites

Dessa returnerar true för mig. Vilket jag väljer att tolka som att den hittat texten med hjälp av uttrycket. Men det uttrycket gör är att kolla om texten börjar med box, oavsett små eller stora bokstäver som följs av 1 eller flera tecken och sen siffra på slutet. Genom att sätta ett $-tecken efter \d så säger du till uttrycket att strängen måste ta slut där. Det kanske kan göra regeln lite striktare.

Regex.IsMatch("Box 2553", @"^[boxBOX].+\d")
Regex.IsMatch("box 23", @"^[boxBOX].+\d")
Regex.IsMatch("boX 5", @"^[boxBOX].+\d")
Regex.IsMatch("BOX: 1", @"^[boxBOX].+\d")
Link to comment
Share on other sites

Ja det funkar, upptäckte dock att även "BIL 123" returnerar True. Verkar som det räcker med att sätta första bokstaven till "B"

 

Regex.IsMatch("BIL 123", @"^[boxBOX].+\d")

Link to comment
Share on other sites

Haha .. jag är hemska tacksam för ditt tålamod och det börjar likna något nu. Du kan säkert ta patent på detta, måste ju finnas ett stort behov då alla webbshoppar som riktar sig till företag inte kan leverera varor till en boxadress.

 

En liten hake bara ... testade med Boxgatan 2, (som ju är en okey leveransadress)  och den blir "True".

Vet inte hur många gator det finns som börjar på Box i Sverige, antar det är liten chans ... försöker även själv lägga in att efter bokstäverna i BOX kollar om det är ett mellanslag eller en siffra, är osäker ändå om det blir vattentätt, då man kan ge sig tusan på att någon kund skriver "Box gatan 2" vilket då borde generera "True"

 

Tack för hjälpen i alla fall!

Link to comment
Share on other sites

Mönstret fungerar ju så att först tittar man på om strängen börjar med 3 bokstäver av kombinationen av bokstäverna b, o och x både versalt och gement. Sen vadsomhelst och sen siffra.

 

On du provar detta så kollar man specifikt efter whitespace efter bokstäverna och innan siffran.@"^(B|b|O|o|X|x){3}\s\d"

Link to comment
Share on other sites

Kanon !!! Funkar perfekt!

Tack för hjälpen!

 

Damerna på kundtjänst blir glada nu :-)

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.



×
×
  • Create New...