检查url是否等于或是子目录?

时间:2011-07-25 15:59:30

标签: java regex spring

我正在寻找在java中执行以下操作的最佳实践方法(可能使用apache commons,一些spring实用程序,或者只是简单的java / regex):

我需要检查给定的URL模式是否等于给定的字符串或者是字符串的子目录:

String pattern = "/myPath";

if(StringUtils.startsWithIgnoreCase(url, pattern) { // }

以上(使用公共方法)适用于以下网址:"../../myPath""../../myPath/""../../myPath/1/2"

问题是它也匹配:"../../myPathABC"。这不是所希望的行为,因为它不是同一目录或子目录。

2 个答案:

答案 0 :(得分:2)

答案 1 :(得分:0)

如果你想使用正则表达式,我会使用以下正则表达式进行正则表达式匹配:

/^(\.\.\/)*myPath(\/|\/.*|$)/

它返回true:

myPath
../../myPath
../../myPath/
../myPath
myPath/

并将为以下任何变体返回false:

myPathABC

或任何不是myPath的内容。可能有一种方法可以用java命令来实现,java有一个库用于所有东西,我很遗憾不知道它。

哦,它会/myPath/工作但是我不确定你是否想要那个(你没有说明),如果你想要匹配的话,在\/?之前添加myPath