webForumDet fria alternativet

Regexp pattern modulus7

Webbutveckling

7 svar · 545 visningar · startad av Bjuris

Medlem sedan juli 2001514 inlägg
Frågan#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?

Medlem sedan apr. 20012 266 inlägg
#2

Flyttas från ASP.NET

Medlem 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
Medlem 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)

Medlem sedan dec. 19996 721 inlägg
#5

Menar du att det ska vara

if n % 7 = c then

Medlem 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

Medlem 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?

Medlem 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.....

257 ms totalt · 4 externa anrop · v20260731065814-full.2f471f9e
119 ms — deklarationer (db)
0 ms — hämta statistik (cache)
131 ms — hämta tråd, inlägg och bilagor (db)
124 ms — ändringar (db)