webForumDet fria alternativet

Regexp pattern modulus7

7 svar · 545 visningar · startad av Bjuris

BjurisMedlem sedan juli 2001514 inlägg
#1

Antagligen är inte detta rätt forum, men förlåt mig i så fall ;)

Jag håller på och försöker skapa ett pattern för en fraktsedel dvs:
123-12345675

tre siffror först som ett prefix.

Det jag har problem med är de åtta andra siffrorna, det är nämligen så att dem består först av 7 valfria siffror och sedan en kontrollsiffra.
För att det skall vara ett giltigt fraktsedelsnummer så kontrolleras den åttonde siffran med modulus 7.

ex:
1234567
Modulus på 12345675 blir 5
således blir fraktsedelsnummret 12345675 + prefix i början.

Hur skall jag lösa detta i regExp?

renholmMedlem sedan apr. 20012 266 inlägg
#2

Flyttas från ASP.NET

Peter SMedlem sedan dec. 20025 483 inlägg
#3

Typ så här:

dim m as match = regex.match(str, "\d{3}\-(\d{7})(\d)")

if m.success then
  dim n as integer = convert.toint32(m.groups(1).tostring())
  dim c as integer = convert.toint32(m.groups(2).tostring())

  if n % 7 = c then
    ' Allt verkar stämma!
  else
    ' Kontrollsiffran stämmer ej
  end if
else
  ' Felaktigt data inmatat
end if
BjurisMedlem sedan juli 2001514 inlägg
#4

Problemet är att det inte alltid är en 5:a i slutet, utan den använder sig av modulus på de sju första siffrorna, så det kommer att variera från 1-7 (tror jag)

emissionMedlem sedan dec. 19996 721 inlägg
#5

Menar du att det ska vara

if n % 7 = c then

BjurisMedlem sedan juli 2001514 inlägg
#6

Nu är jag lite bortkollrad.
% = modulus ??

Jag skrev förövrigt fel på den översta modulus förklaringen
mod(1234567) = 5
ej: mod(12345675) = 5 --> det blir något helt annat

Peter SMedlem sedan dec. 20025 483 inlägg
#7

Då borde emissions rättelse av mig fungera. Om inte får du förklara vad som skall stå till höger om modulusoperatorn. Är det den sjunda siffran t.ex?

emissionMedlem sedan dec. 19996 721 inlägg
#8

Bjuris skrev:

Nu är jag lite bortkollrad.
% = modulus ?

Nej, det är alldeles riktigt. Skulle bara kolla att du var vaken.... :)

Modulus skrivs ju "Mod" i VB.....

137 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
134 ms — hämta tråd, inlägg och bilagor (db)