【问题标题】:Regex for determining if Alphanumeric code is in range用于确定字母数字代码是否在范围内的正则表达式
【发布时间】:2016-01-27 00:57:38
【问题描述】:

我正在开发 ICD10 诊断代码应用程序。我需要确定一个 ICD10 代码是否在某个范围内。例如:

代码: 4A1H7EZ

范围: 4A1H7CZ - 4A1H7HZ

这应该返回“True”。

我尝试将字母字符转换为数字(a=0、b=1 等),但生成的数字与其他范围/代码冲突。

正则表达式不是我的强项,任何建议都将不胜感激。

【问题讨论】:

  • 上面的代码/范围只是格式的一个例子
  • 正则表达式不擅长范围。您可以使用“范围”(按字母顺序在...之间)吗?
  • @Kieran:但 Tushar 的表达式是一个正则表达式,它在您的示例中正常工作。如果它仍然不是您想要的,您应该调整您的问题。
  • @Jongware:它确实适用于 example。范围和代码都发生了变化。我需要一个动态解决方案
  • @Kieran:因此您需要提供更多示例。

标签: javascript regex icd


【解决方案1】:

你必须使用正则表达式吗? 正如在comparing 2 strings alphabetically for sorting purposes 中看到的那样 javascript 自动比较字符串。

所以"4A1H7EZ" > "4A1H7CZ" && "4A1H7EZ" < "4A1H7HZ" 将返回true

【讨论】:

  • 很有趣,但只有在最后一位数字总是字母时才有效。就我而言,最后 2 位数字可能是字母数字。示例:4A0J72Z
  • 我不确定我是否理解你 - "4A0J723" > "4A0J722" 产生 true。但是我没有提到字母比数字“大”所以"4A0J72Z" > "4A0J729" 也会产生true 并且大小写字母之间也存在差异
  • 抱歉,一直很忙。这实际上似乎在我迄今为止执行的所有测试中都非常有效
  • 是的,很好的解决方案,但您可能会被X 发现,它是一个填充字符,而不是诊断指示符(除非它是初始字符)。有时会使用小数位,您必须在比较之前将其删除。最后,您可以在不同平台上遇到非常微妙的编码问题,例如一旦我发现在某些平台上的字符串比较中忽略了空格,但在其他平台上却没有。您可能需要确保 ICD 代码是 ASCII。我的 R 包 icd9icd10 github 上的分支)github.com/jackwasey/icd9/tree/icd10 有很多 ICD-10 代码的正则表达式。
【解决方案2】:

David 有在 Javascript 中执行此操作的正确答案。

但是,“ICD10 诊断代码应用程序”可能应该使用数据库;考虑到这一点,你真的应该用 SQL 来解决这个问题,在这种情况下,这将是微不足道的。

这样的查询将返回与给定代码匹配的任何范围:

select * from ranges where diag_code between range_start and range_end

【讨论】:

    【解决方案3】:

    您应该使用循环并一一比较每个索引。像这样的东西:

    for entry, index in code:
      if entry.isNumeric:
          if range[index] < entry and rang2[index] > entry:
             return false
    
      else
          if compareAlpha(range[index], entry) > 1 and compareAlpha(range2[index], entry ) < 0:
             return false
    return true
    

    (未测试)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-29
      • 2011-01-31
      • 2021-09-23
      • 1970-01-01
      相关资源
      最近更新 更多