Регулярное выражение для определения, находится ли буквенно-цифровой код в диапазоне

Я работаю над приложением диагностического кода ICD10. Мне нужно определить, попадает ли один код ICD10 в определенный диапазон. Например:

Код: 4A1H7EZ

Диапазон: 4A1H7CZ - 4A1H7HZ

Это должно вернуть "True".

Я пытался преобразовать буквенные символы в числа (a=0, b=1 и т. Д.), Но полученное число конфликтует с другими диапазонами / кодами.

Regex не моя сильная сторона, любые предложения будут оценены.

3 ответа

Решение

Вы должны использовать регулярные выражения? Как видно из приведенного здесь сравнения двух строк в алфавитном порядке для сортировки, JavaScript автоматически сравнивает строки.

Так "4A1H7EZ" > "4A1H7CZ" && "4A1H7EZ" < "4A1H7HZ" вернусь true

Дэвид имеет правильный ответ для этого в Javascript.

Однако "приложение с диагностическим кодом ICD10", вероятно, должно использовать базу данных; и учитывая это, вы должны действительно решить это с помощью SQL, и в этом случае это будет тривиально.

Такой запрос вернул бы любой диапазон, который соответствует данному коду:

select * from ranges where diag_code between range_start and range_end

Вы должны использовать цикл и сравнивать каждый индекс один за другим. С чем-то вроде этого:

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

(не испытано)

Другие вопросы по тегам