我想检查字符串是否是数学运算符(+, - ,*,/)。我正在使用匹配方法来检查正则表达式的字符,但在检查只包含点(“。”)的字符串时它总是返回true。这是代码:
String dot = ".";
if(dot.matches("[*+-/]"))
System.out.println("BAD");
else
System.out.println("GOOD");
这会打印“坏”。我明白这可能与“。”这个事实有关。在正则表达式匹配一切,但我不明白为什么这会有所作为。有没有办法让这个返回虚假?谢谢。
答案 0 :(得分:1)
不,您调用String
的{{1}}不被视为正则表达式。这是字面意思。
您的案例正在打印matches
,因为此BAD
是[*+-/]
介于.
和+
之间的字符类。将/
移到最后,以便它不会创建范围-
。
答案 1 :(得分:1)
我打算提出一个解决这个问题的工具。
尝试regexr,它很丰富,它在侧边栏上得到了帮助,你可以更好地编写你想要的所有情况并且不想匹配的正则表达式。
为了帮助您入门,请查看此处写的非常基本的正则表达式:http://regexr.com/3af78。
\d [*+/-] \d
由于我不知道您的支票有多严格或宽松,我添加了您可能想要或不想考虑的其他字符串。