Я использую коммерческое приложение, в котором есть возможность использовать RegEx для проверки форматирования поля. Обычно это работает довольно хорошо. Однако сегодня я столкнулся с проверкой следующих строк: буквенно-цифровые коды в кавычках с простыми арифметическими операторами (+ - / *). Очевидно, проблема заключается в том, что иногда пользователи добавляют дополнительные пробелы (например, «FLR01» вместо «FLR01») или имеют другие опечатки, такие как несовпадающие скобки, которые вызывают проблемы с последующей обработкой.
В первых примерах было добавлено 5 кодов:
"FLR01" + "FLR02" + "FLR03" + "FMD01" + "FMR05"
Итак, я начал идти по пути сопоставления 5 буквенно-цифровых символов, указанных в строках:
"[0-9a-Za-Z] {5}" [+ - * /]
Однако формулы быстро стали сложнее, и я не знаю, как обойти следующие осложнения:
- Мне нужно проверить один из четырех простых математических операторов (+ - * /) между каждым кодом, но не после последнего.
- Может быть добавлено любое количество кодов, а не только пять, как в примере выше.
- С круглыми скобками все в порядке («X» + «Y») / «2»
- Несоответствующие скобки не в порядке.
- Никакая формула (например, пробел) не подходит.
Действительно:
"FLR01"+"FLR02"+"FLR03"+"FMD01"+"FMR05"
"0XT"+"1SEAL"+"1XT"+"23LSL"+"23NBL"
("LS400"+"LT400")*"LC430"/("EL414"+"EL414R"+"LC407"+"LC407R"+"LC410"+"LC410R"+"LC420"+"LC420R")
Invalid:
" FLR01" +"FLR02"
"FLR01"J"FLR02"
("FLR01"+"FLR02"
Это не то, что вы легко можете сделать с RegExp? Основываясь на ответе Джеффа на номер 230517, я подозреваю, что у меня не получается, по крайней мере, проблема «согласованного соединения». Даже частичное решение проблемы (например, пометка лишних пробелов, недопустимые операторы), вероятно, будет лучше, чем ничего, даже если я не смогу решить проблему с круглыми скобками. Предложения приветствуются!
Спасибо
Стивен