2009-06-03 6 views
1

正規表現でmod 11チェックデジットルーチンを作成することはできますか?mod 11正規表現でチェックデジット

nubmerは10桁の数字、

ステップ1: A =(2番目の数×2)+(3番目の数* 4)+(第四数* 8)+(5数* 5)+ (6番号* 10)+(7番号* 9)+(8数* 7)+(9数* 3))

ステップ2: B = A/11(ignor剰余)

ステップ3: C = B * 11

ステップ4: D = A - C

ステップ5: 11 - Dは= 10桁

+2

正規表現を使用しないと直感的に使うのはなぜですか? –

答えて

3

なし必要があります - 基本的に、あなたはここで数学をやりたいと思っていないしている、そしてそれは本当にちょうど約ある正規表現に適合しませんパターン。

つまり、理論的にはです。これは確かに可能です。すべての有効な数値をリストし、それらを1つの膨大な正規表現に組み合わせることができます。しかし、は実際にはではありません。

+0

まさに私が言っていたことです。正規表現はチューリング完全言語ではありません。数学はできないことの一つです。 – ojrac

+1

正規表現は有限状態機械です:http://quaxio.com/triple/ – Lotus

0

正規表現はパターンマッチングを行いますが、実際には解析しません。数字を取得するには、数値を解析する必要があります。正規表現を使用して、10桁の数字であることを確認し、ToString()を使用してそれを切り詰めることをお勧めします。