Just nu i M3-nätverket
Gå till innehåll

Regular Expression i .NET Web Pages


KIVA_62

Rekommendera Poster

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?

 

 

Länk till kommentar
Dela på andra webbplatser

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

Länk till kommentar
Dela på andra webbplatser

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")

);

Länk till kommentar
Dela på andra webbplatser

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")
Länk till kommentar
Dela på andra webbplatser

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")

Länk till kommentar
Dela på andra webbplatser

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!

Länk till kommentar
Dela på andra webbplatser

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"

Länk till kommentar
Dela på andra webbplatser

Kanon !!! Funkar perfekt!

Tack för hjälpen!

 

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

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.



×
×
  • Skapa nytt...