---
title: "regExp Slippa \"fnuttarna\""
type: "forum-thread"
url: "https://www.webforum.nu/amne/javascript/166175-regexp-slippa-fnuttarna"
topic: "JavaScript"
topic_url: "https://www.webforum.nu/amne/javascript"
author: "Duffer"
published: "2007-11-07T10:03:26.000Z"
updated: "2007-11-12T18:57:34.000Z"
replies: 10
views: 753
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/javascript/166175-regexp-slippa-fnuttarna"
---

# regExp Slippa "fnuttarna"

## #1 — Duffer, 2007-11-07T10:03Z

Hej,

Jag försöker matcha strängar där man kan skriva värden med eller utan fnuttar ( " ) och där man skiljer på orden med space . Man kan välja att skriva med eller utan citattecken, men vill man att flera ord ska räknas som ett måste man skriva det inom citattecken, t.ex. kan man skriva:

first second -last
"first word" second -last
first "second word" -last
"first word" "second word" -last

ja ni förstår poängen, min regexp som funkar ser ut såhär:
("\[^"\]+"\|\[^\\s\]+)\\s+("\[^"\]+"\|\[^\\s\]+)\\s+-(.+)

Men den tar med "fnuttarna" i resultatet, kan jag på något sätt slippa dem?

Tack för hjälpen!

Mvh
Tobias

EDIT! Stavning

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

## #2 — voigtann1, 2007-11-07T10:07Z

```
(\"?[^\"]+"?|[^\s]+)\s+(\"?[^\"]+"?|[^\s]+)\s+-(.+)
```

?? 
" skall skrivas \\" enligt min mening :)

Du får nog ta en replace på alla " för att plocka bort den. regExp letar ju efter mönster.

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

## #3 — voigtann1, 2007-11-07T10:20Z

```
\"?(\-?[^\" ]+)\"?
```

 får jag flera träffar om jag skriver: first word second word -last
och spara alla "träffar" i en grupp.. dvs den sparar:
first
word
second
word
\-last
(dock om man vill använda -last med " måste man skriva: "-last") går väl och fixa.

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

## #4 — Duffer, 2007-11-07T13:05Z

Tack för hjälpen voightann1 men det sista kan jag tyvärr inte använda eftersom jag måste hantera det som står inom "" som ett ord, och det är så jag vill ha det. angående escape på "fnuttarna" så funkar det feint utan dem, iaf i JS ;-)

Mvh

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

## #5 — voigtann1, 2007-11-07T13:40Z

```
"([^\"]+)"|([^ ]+)
```

Testade snabbt i RegExBuddy:
first "word second word" "asda asd"
gav träff (när jag gjorde en replace):

- first
- word second word
- asda asd

```
subject = subject.replace(/"([^"]+)"|([^ ]+)/ig, "$1$2");
```

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

## #6 — Duffer, 2007-11-07T13:55Z

Det är inte vad jag är ute efter ;-)  , då blir livet enklare för mig med min regexp och sen bara köra replace på citattecknena, eftersom att sista ordet med bindestrecket framför är obligatoriskt, så finns inte det sista argumentet i arrayn så har man anget en felaktig sträng.

Mvh

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

## #7 — voigtann1, 2007-11-07T15:06Z

\-last skall alltid vara med i din sträng då? Hur många ord kan det vara innan? 
Tror du måste göra det i två led:
hitta alla ord mellan " " och ersätta de mellanslagen med något tecken (\_\_ ?) och sen plocka bort "" och sen behandla den nya strängen att du splitar mellanslagen. Är trött nu :/ men kommer inte på någon direkt bra lösning.

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

## #8 — Peter S, 2007-11-07T17:54Z

```
var matches = myString.match(/"[^"]+"|[^ ]+/g);
```

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

## #9 — Duffer, 2007-11-12T17:37Z

Poängen är den att användaren är och ska vara tvingad att skriva två strängvärden antingen inanför " " eller som ett enda ord utan, skilda med space, sen SKA man ha anget en sista "flagga" som inleds med - (bindestreck) men detta bindestreck vill jag bara se att det finns där men sen matcha strängvärdet, så som min regexp gör.

Frågan här var ju "Hur slipper jag fnuttarna" men jag har förstått att det är klurigt =/

Mvh
Tobias

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

## #10 — voigtann1, 2007-11-12T18:51Z

"?(\[^"\]+\|\[^\\s\]+)"?\\s+"?(\[^"\]+\|\[^\\s\]+)"?\\s+-(.+)
gäller väl då?

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

## #11 — Peter S, 2007-11-12T18:57Z

```
if (/^(?:"([^"]+)"|([^ ]+)) (?:"([^"]+)"|([^ ]+)) -\w+$/.test(q)){
  alert( "First: " + (RegExp.$1 || RegExp.$2) +
    ", second: " + (RegExp.$3 ||RegExp.$4) )
} else {
  alert("Input error");
}
```

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

---

Tråden på webben: https://www.webforum.nu/amne/javascript/166175-regexp-slippa-fnuttarna
