---
title: ".net och RegExp"
type: "forum-thread"
url: "https://www.webforum.nu/amne/dotnet/149632-net-och-regexp"
topic: ".NET"
topic_url: "https://www.webforum.nu/amne/dotnet"
author: "CatZ"
published: "2006-08-02T03:33:30.000Z"
updated: "2006-08-10T12:44:55.000Z"
replies: 5
views: 433
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/dotnet/149632-net-och-regexp"
---

# .net och RegExp

## #1 — CatZ, 2006-08-02T03:33Z

Har inte riktigt fattat det där med regexp och .net! Kan man också använda sin pattern till att ta bort otillåtna tecken automatiskt?

Det hela gäller en customvalidator i för vb. Alltså hittar den några otillåtna tecken vill jag ta bort dem.

```
RegExp.Replace(input, "pattern", output)
```

 mitt problem är att det pattern jag har för att matcha inte vill fungera med replace. Låt oss säga att jag söker en match med 

```
^[a-zA-Z0-9]+$
```

 Hur skulle jag kunna få samma mönster att helt enkelt ta bort otillåtna tecken?

Har lite problem då vi ska söka i databasen efter något ledigt (AutoPostBack) och då måste jag ta bort otillåtna tecken innan jag söker annars går det galet. 

Har löst det så länge med följande kod. Tyvärr känns den både klumpig och ful. 

```
Function SQLEncode(ByVal myString As String)
			myString = Replace(myString, "'", "")
			myString = Replace(myString, "!", "")
			myString = Replace(myString, "?", "")
			myString = Replace(myString, "*", "")
			myString = Replace(myString, "&", "")
			myString = Replace(myString, "^", "")
			myString = Replace(myString, "%", "")
			myString = Replace(myString, "$", "")
			myString = Replace(myString, "~", "")
			myString = Replace(myString, "`", "")
			myString = Replace(myString, ")", "")
			myString = Replace(myString, "(", "")
			myString = Replace(myString, "=", "")
			myString = Replace(myString, "\", "")
			myString = Replace(myString, "|", "")
			myString = Replace(myString, ";", "")
			myString = Replace(myString, ":", "")
			myString = Replace(myString, "<", "")
			myString = Replace(myString, ">", "")
			myString = Replace(myString, " ", "")
			myString = Replace(myString, ",", "")
			myString = Replace(myString, ".", "")
			myString = Replace(myString, "[", "")
			myString = Replace(myString, "]", "")
			myString = Replace(myString, "{", "")
			myString = Replace(myString, "}", "")
			myString = Replace(myString, "/", "")
			myString = Replace(myString, """", "")
			myString = Replace(myString, "#", "")
			myString = Replace(myString, "@", "")
			myString = Replace(myString, "å", "")
			myString = Replace(myString, "¨", "")
			myString = Replace(myString, "ä", "")
			myString = Replace(myString, "ö", "")
			myString = Replace(myString, "¤", "")
			myString = Replace(myString, "Å", "")
			myString = Replace(myString, "Ä", "")
			myString = Replace(myString, "Ö", "")
			myString = Replace(myString, "´", "")
			myString = Replace(myString, "+", "")
			SQLEncode = myString
		End Function
```

Permalänk: https://www.webforum.nu/p/149632

## #2 — P, 2006-08-02T08:38Z

Nu har jag inget svar på problemet men att ställa upp massa kod som 

```
string hej = hej.Funktion()
```

är inte effektivt då det skapas en ny objekt varje gång. Kolla på System.Text.StringBuilder klassen i så fall

Permalänk: https://www.webforum.nu/p/1846282

## #3 — CatZ, 2006-08-02T08:55Z

> **P skrev:**
>
> Nu har jag inget svar på problemet men att ställa upp massa kod som 
>
>
> ```
> string hej = hej.Funktion()
> ```
>
> 
> 
> är inte effektivt då det skapas en ny objekt varje gång. Kolla på System.Text.StringBuilder klassen i så fall

Tack för att du påpekar det uppenbara! :P Det är ju därför jag vill använda regexp.replace har ändrat till följande kod men den är ju inte alls dynamisk då jag vill säga tillåt alfanumeriska värden och - & \_ men \_ / - ska inte tillåtas först eller sist.

Helt klart ett fall för regexp och inte 

```
Public Shared Function SQLEncode(ByVal myString As String)
			Dim sb As New StringBuilder(myString)
			sb.Replace("'", "")
			SQLEncode = sb.ToString
		End Function
```

 Märker skillnaden dock, det går mycket fortare om man pangar på med en sablans massa konstiga tecken.

Permalänk: https://www.webforum.nu/p/1846288

## #4 — Dino, 2006-08-02T09:01Z

Varför inte använda en [RegularExpressionValidator](http://msdn2.microsoft.com/en-us/library/system.web.ui.webcontrols.regularexpressionvalidator.aspx) från början som ser till att bara släppa igenom godkända tecken.

```
<asp:RequiredFieldValidator 
   Id="RequiredFieldValidator2"
   ControlToValidate="TextBox1"
   ErrorMessage="*"
   runat="server"/> 
<asp:RegularExpressionValidator 
   Id="RegularExpressionValidator1" 
   ControlToValidate="TextBox1"
   ValidationExpression="^[a-zA-Z0-9]+$"
   ErrorMessage="You are a very very evil person, aren't you."
   runat="server"/>
```

Permalänk: https://www.webforum.nu/p/1846291

## #5 — CatZ, 2006-08-04T00:51Z

Du läste nog inte hela meddelandet, det fungerar som sagt utmärkt att kolla med det, men jag skulle vilja göra ett mönster som tar bort otillåtna  tecken eftersom en sökning görs mot databasen och jag har ingen möjlighet att validera den kontrollen å det viset innan sökningen.

Permalänk: https://www.webforum.nu/p/1849737

## #6 — drunken_master, 2006-08-10T12:44Z

Testa med detta eller något liknande.
\[^a-zA-Z0-9\]+

Permalänk: https://www.webforum.nu/p/1851029

---

Tråden på webben: https://www.webforum.nu/amne/dotnet/149632-net-och-regexp
