正则表达式检查无效输入

时间:2017-02-14 11:11:05

标签: java

我需要解析一个包含数据库查询的字符串。

有效字符串可以是:

  • 状态:OPEN,PENDING
  • 状态:OPEN
  • 状态:待
  • 状态:REJECTED
  • 类型:SMALL
  • 类型:BIG
  • 重量大于100

以下内容无效:

  • weight:100<PENDING

我的第一次尝试是在Java中:

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

显然,它无法正确解析最后一个语句。

2 个答案:

答案 0 :(得分:0)

我认为用regexpression验证这一点是一件好事。 但你可以尝试这个表达式:

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

它适用于我的在线regexpression测试仪,用于输入

答案 1 :(得分:0)

我根据您的要求创建了这个表达式:

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

其他任何内容都与无效状态,类型等相匹配

例如:

这些都是无效的:

Status>100
type:REJECTED
weight:100

希望这有帮助!