---
title: "Regexp för att matcha nästan rätt"
type: "forum-thread"
url: "https://www.webforum.nu/amne/javascript/123519-regexp-för-att-matcha-nästan-rätt"
topic: "JavaScript"
topic_url: "https://www.webforum.nu/amne/javascript"
author: "nitro2k01"
published: "2005-03-01T14:45:35.000Z"
updated: "2005-03-18T14:54:44.000Z"
replies: 6
views: 456
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/123519-regexp-för-att-matcha-nästan-rätt"
---

# Regexp för att matcha nästan rätt

## #1 — nitro2k01, 2005-03-01T14:45Z

Jag söker efter en regexp som matchar ett sökord och när ett sökord är nästan rätt, t ex
Om jag söker efter nitro2k01 så ska den även matcha nxtro2k01 eller nitfo2k01 och gärna även om det saknas eller finns en bokstav för mycket, t ex nitroo2k01 eller ntro2k01.
Matchningen ska ske så att den matchar om ordet finns i söksträngen.

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

## #2 — nitro2k01, 2005-03-15T16:34Z

\*bump\*

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

## #3 — dectgap, 2005-03-15T23:46Z

Jag är övetygad om att det är en omöjlighet.
Reguljära uttryck kan inte "matcha till 95%" eller liknande.

Ett sätt skulle kunna vara att dynamiskt skapa uttryck, för att få med just de fall du talar om: total matchning, matchning där sökningen innehåller ett tecken mer eller matchning där sökningen innehåller ett tecken mindre.

Lite pseudo-kod:

```
var searchFor = "nitro2k01";
var searcForRE = new RegExp(searchForRE);

// Total matchning
if(searchForRE.test(str))
   return true;

// Ett tecken har bytts ut mot ett annat
for(var i=0; i<searchFor.length; i++) {
   searchForRE = new RegExp(ersätt det i:te tecknet i searchFor med en punkt);
   if(searchForRE.test(str))
      return true;
}

// Ett tecken saknas
for(var i=0; i<searchFor.length; i++) {
   searchForRE = new RegExp(ta bort det i:te tecknet från searchFor);
   if(searchForRE.test(str))
      return true;
}

// Det finns ett tecken för mycket
for(var i=0; i<searchFor.length; i++) {
   searchForRE = new RegExp(stoppa in en punkt på den  i:te platsen i searchFor);
   if(searchForRE.test(str))
      return true;
}
```

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

## #4 — RGB, 2005-03-16T20:08Z

Det finns inget stöd  för "fuzzy matches" i JS. 
Men om du vill skriva ngt eget så hittar du lite info här: [Levenshtein Distance](http://www.merriampark.com/ld.htm). 
Finns även en del intressanta länkar där.

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

## #5 — dectgap, 2005-03-16T22:56Z

> **RGB skrev:**
>
> Det finns inget stöd  för "fuzzy matches" i JS. 
> Men om du vill skriva ngt eget så hittar du lite info här: [Levenshtein Distance](http://www.merriampark.com/ld.htm). 
> Finns även en del intressanta länkar där.

Fantastiskt intressant - tack :)
Det fanns förresten redan en implemtation i JavaScript under länkarna.
<http://www.mgilleland.com/ld/ldjavascript.htm>

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

## #6 — Jojoxx, 2005-03-17T06:53Z

Ja, verkligen. Det ska jag läsa ikväll :)

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

## #7 — nitro2k01, 2005-03-18T14:54Z

Undrar om man får sno det skriptet rakt av, det var iaf precis vad jag var ute efter.

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

---

Tråden på webben: https://www.webforum.nu/amne/javascript/123519-regexp-för-att-matcha-nästan-rätt
