2009-06-03 6 views
1

Est-il possible de créer une routine de chiffre de contrôle mod 11 avec une instruction regex?mod 11 chiffre de contrôle avec regex

THe nubmer est un numéro à 10 chiffres,

Etape 1: A = (2ème numéro * 2) + (3ème numéro * 4) + (quatrième nombre * 8) + (5e numéro * 5) + (6e numéro * 10) + (7e numéro * 9) + (8e numéro * 7) + (9e numéro * 3))

Etape 2: B = A/11 (le reste de Ignor)

Etape 3: C = B * 11

Étape 4: D = A - C

Étape 5: 11 - D doit = ​​le 10ème chiffre

+2

Pourquoi utiliser une regex quand c'est si simple sans un? –

Répondre

3

Non - vous êtes fondamentalement vouloir faire des mathématiques ici, et qui ne correspond pas vraiment avec des expressions régulières qui sont à peu près modèles Je veux dire, théoriquement c'est certainement possible - vous pouvez lister tous les nombres valides, et les combiner en une seule regex énorme. Cependant, ce n'est pas pratiquement possible.

+0

Exactement ce que j'étais sur le point de dire. Regex n'est pas un langage complet; les mathématiques sont une des choses qu'il ne peut pas faire. – ojrac

+1

Regex est une machine à états finis: http://quaxio.com/triple/ – Lotus

0

Regex effectue des correspondances, pas vraiment d'analyse. Vous devez analyser le nombre pour obtenir les chiffres. Je suggère d'utiliser l'expression régulière pour s'assurer qu'il s'agit d'un nombre à 10 chiffres, puis ToString() et hachez-le.