webForumDet fria alternativet

Regexp söka ut artikelnummer ur sträng

ASP

8 svar · 318 visningar · startad av devotion

Medlem sedan jan. 20013 582 inlägg
Frågan#1

:h

Hej!

Har fått hjälp med följande kod för att söka ut ett sjusiffrigt artikelnummer ur en sträng: (tack Peter S, funkar finfint!)

' Reguljärt uttryck för att matcha sju siffror efter varandra
dim re
set re = new regexp
re.pattern = "\d{7}"

' Med execute() får vi ut en array av träffar
' Eftersom global-flaggan ej är satt, kan vi endast få en träff och den ligger i m(0)
dim m
set m = re.execute(strArticleName)

if m.count then
	strEnumber = m(0)
end if

set re = nothing

Men jag har kommit på en sak...

Om montören skriver fel och det blir 9 siffror så är det ju inte ett giltigt nummer, som det är nu så tas ju det med eftersom villkoret är 7 siffror efter varandra. Kan man inte begraänsa till att det får vara max vara 7 sifrror i gruppen?

Mvh
Henrik

Medlem sedan juli 200012 978 inlägg
#2

Skall det bli ett felmeddelande då?
Om montören vill ha fyrtio st av artikeln 401234567 eller artikelnnr 123456740 st
Vad skall hända.
Jag måste då kanske säga att viss inkontroll kan bli nödvändigt.
Eller är det bara en Informationssak?

Medlem sedan jan. 20013 582 inlägg
#3

Hej!

Enhet "st" fylls i ett annat fält, så det borde funka.

så, det ska bli ett felmeddelande!

Mvh
Henrik

Intressant synpunkt... :)

Medlem sedan dec. 20025 483 inlägg
#4

Halloj!

Följande tror jag skall fungera:

' Reguljärt uttryck för att matcha sju siffror efter varandra
dim re
set re = new regexp
re.pattern = "\d{8,}" ' Matcha 8, eller fler, på varandra följande siffror

' Med execute() får vi ut en array av träffar
' Eftersom global-flaggan ej är satt, kan vi endast få en träff och den ligger i m(0)
dim m
set m = re.execute(strArticleName)

if m.count then
	' error! 8 eller fler siffror efter varandra
else
   re.pattern = "\d{7}"
   set m = nothing

   set m = re.execute(strArticleName)

   if m.count then
      strEnumber = m(0)
   end if
end if

set re = nothing
Medlem sedan jan. 20013 582 inlägg
#5

Hej :)

Perfekt!

Mvh
Henrik

Medlem sedan jan. 20013 582 inlägg
#6

Hej igen!!
tredje gången gillt..

Såg att det fanns några 8-siffriga artrikelnummer också hos en leverantör...(ej E-nummer)

Hur gör man koden för att få ut BÅDE 7- och 8-siffriga nummer men inga andra. Är det ett felaktigt nummer tas ju det hand om senare eftersom det inte blir en träff i databasen...

Mvh
Henrik

Medlem sedan juli 20033 147 inlägg
#7

Tror du skriver följande. Dock inte säker. :)

re.pattern = "\d{7,8}"
Medlem sedan dec. 20025 483 inlägg
#8

Samt litet längre upp

re.pattern = "\d{9,}"

:)

Medlem sedan jan. 20013 582 inlägg
#9

Ahh, ok!

Tackar!

Henrik

265 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
133 ms — deklarationer (db)
0 ms — hämta statistik (cache)
128 ms — hämta tråd, inlägg och bilagor (db)
134 ms — ändringar (db)