Регулярное выражение для определения, находится ли буквенно-цифровой код в диапазоне
Я работаю над приложением диагностического кода 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
(не испытано)