2009-06-03 9 views
1

Ist es möglich, eine Mod 11 Prüfziffernroutine mit einer Regex-Anweisung zu erstellen?mod 11 Prüfziffer mit Regex

THe nubmer ist eine 10-stellige Nummer,

Schritt 1: A = (2-Nummer * 2) + (3 Nummer * 4) + (4 Nummer * 8) + (5.-Nummer * 5) + (6. Nummer * 10) + (7-Nummer * 9) + (8-Nummer * 7) + (9. Nummer * 3))

Schritt 2: B = A/11 (Ignor Rest)

Schritt 3: C = B * 11

Schritt 4: D = A - C

Schritt 5: 11 - D muss = die 10. Stelle

+2

Warum einen Regex verwenden, wenn es ohne einen so einfach ist? –

Antwort

3

Nein - im Grunde wollen, sind Sie hier Mathematik zu tun, und das ist wirklich nicht mit regulären Ausdrücken passen, die gerade im Begriff sind, Muster.

Ich meine, theoretisch ist es sicherlich möglich - Sie könnten alle gültigen Nummern auflisten und kombinieren sie zu einem riesigen Regex. Es ist jedoch nicht praktisch machbar.

+0

Genau was ich sagen wollte. Regex ist keine turing-vollständige Sprache; Mathe ist eines der Dinge, die es nicht tun kann. – ojrac

+1

Regex ist endliche Maschine: http://quaxio.com/triple/ – Lotus

0

Regex macht Mustererkennung, nicht wirklich Parsing. Sie müssen die Zahl analysieren, um die Ziffern zu erhalten. Ich würde vorschlagen, die Regex zu verwenden, um sicherzustellen, dass es eine 10-stellige Nummer ist und dann ToString() und hacken es auf.