【问题标题】:mod 11 check digit with regex带正则表达式的 mod 11 校验位
【发布时间】:2009-06-03 16:38:18
【问题描述】:

是否可以使用 regex 语句创建 mod 11 校验位例程?

号码是 10 位数字,

第 1 步: A = (2号 * 2) + (3号 * 4) + (4号 * 8) + (5号 * 5) + (6号 * 10) + (7号 * 9) + (8号 * 7) + (第 9 个数字 * 3))

第 2 步: B = A / 11(忽略余数)

第 3 步: C = B * 11

第 4 步: D = A - C

第 5 步: 11 - D 必须 = 第 10 位

【问题讨论】:

  • 既然没有正则表达式这么简单,为什么还要使用它?

标签: regex check-digit


【解决方案1】:

不 - 基本上你想在这里做数学,但这并不适合正则表达式,因为正则表达式只是关于模式。

我的意思是,理论上这当然是可能的 - 您可以列出所有有效数字,并将它们组合成一个巨大的正则表达式。但是,这实际上并不可行。

【讨论】:

  • 正是我要说的。正则表达式不是图灵完备的语言;数学是它不能做的事情之一。
【解决方案2】:

将正则表达式用作有限状态机。 http://quaxio.com/triple/

【讨论】:

  • 哇...我真的很喜欢这个。虽然 regex 确实不太适合数学方程……但它可能真的让我很感兴趣。
【解决方案3】:

Regex 进行模式匹配,而不是真正的解析。您需要解析数字以获取数字。我建议使用正则表达式来确保它是一个 10 位数字,然后使用 ToString() 并将其切碎。

【讨论】:

    猜你喜欢
    • 2017-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多