首页 > 解决方案 > Java 匹配不匹配

问题描述

有人可以解释为什么java中的以下语句返回false吗?

boolean results = "123/#".matches("\\d/#")

我试图逃避正斜杠和井号,但这被标记为多余的..

标签: javastring

解决方案


Java 中的 String.matches() 需要完整的字符串来匹配正则表达式,就好像它是用^ ... $. 所以想象一下,你实际上是在^\d/#$这里测试正则表达式。

要允许字符串在之前/之后包含任何其他内容,您必须在正则表达式中使用.*(anything) 明确允许它,例如:

boolean results = "123/#".matches(".*\\d/#.*")

推荐阅读