【发布时间】:2014-06-07 11:34:26
【问题描述】:
我正在使用以下正则表达式:
if (input.matches("^[\\d\\s()\bAND\b\bOR\b.]+$")) {
// do something
}
我的目标是仅验证数字(整数和小数)、空格、( )、点、AND、OR。 其他一切都是不允许的。 似乎它有效,但我遇到了单词边界 \bAND\b 和 \bOR\b 的问题 例如。我不能不输入 ANDWE 或 EEE 或任何组合,但我能做的是 AN 或 A。 如何在一个字符串中只允许两个单词 AND 或 OR?它们在字符串中是可选的。
输入示例
0.10 AND 23 - 有效
12 AND (15 OR 0.2) - 有效
12 或 190 - 有效
12 AND AND 12 - 有效
12 A 233 - 无效
【问题讨论】:
-
你不能在字符类
[]中使用单词。 -
您的输入看起来如何?举几个例子!我的意思是它必须是有效的数学表达式还是任何序列 f.e. “AND AND OR 333435553”符合条件
-
不,它不应该是有效的数学,只有 AND 和 OR 接受的词
-
好的。我假设您还必须验证表达式?也许您可以创建一个简单的 Parser 类,如果出现不正确的字符则返回错误?无论如何,您都需要检查括号是否匹配等...
-
检查一下解析和评估表达式:stackoverflow.com/questions/13421424/…