2017-02-14 3 views
-1

Мне нужно разобрать строку, содержащую запрос для базы данных.Регулярное выражение для проверки недопустимого ввода

Допустимы строки могут быть следующие:

  • Статус: Открыто, ОЖИДАНИЕ
  • Статус: Открыто
  • Статус: ОЖИДАНИЕ
  • Статус: REJECTED
  • Тип: МАЛЕНЬКИЙ
  • тип: BIG
  • масса> 100

Следующая недействительный:

  • weight:100<PENDING

Моя первая попытка была это в Java:

Pattern p = Pattern.compile("(\\w+?)(:|<|>)(\\w+)(|,)*(\\w+)*$"); 

Очевидно, что не может корректно разобрать последнее утверждение.

+1

Я не думаю, что регулярное выражение является подходящим инструментом для этого конкретного сценария. – JonK

ответ

0

Я думаю, что проверка этого с помощью регулярного выражения - это вещь с градом. Но вы можете попробовать это выражение:

"([\\w]+)(:(([A-Z]+)|([A-Z]+,([A-Z]+)))|(>[0-9]+))" 

Он работал для меня в онлайн regexpression тестер для входов

0

Я создал это выражение для вашего требования:

Pattern pattern = Pattern.compile("((Status:(OPEN|PENDING|OPEN,PENDING|REJECTED))|(type:(SMALL|BIG))|(weight[<>]\\d+))"); 

все остальное соответствует недействительны статус, типы и т. д.

Например:

Это все недействителен:

Status>100 
type:REJECTED 
weight:100 

Надеется, что это помогает!

Смежные вопросы