1

パスとパラメーターだけで、ドメインなしで URL を検証しようとしています。

私が使用している正規表現はほとんどの作業を行いますが、防止する方法がわからないエラーがいくつかあります (私は正規表現にかなり慣れていません)。

/^(\/([\w#!:.?+=&%@!\-\/])+)$/i

次の例は正しく検証されています

/asd.jsp -> true
/asd/asd.jsp -> true
/asd/asd.jsp?bar=baz&inga=42&quux -> true
/asd/asd.jsp?bar=ba z&inga=42&quux -> false

しかし、これは正しいULRではなく、私にも当てはまります:

/asd/asd./jsp -> true :(
/asd/asd.jsp/ -> true :(
/asd./asd.jsp -> true :(
/asd///asd.jsp -> true :(
/asd/asd.jsp&bar=baz?inga=42?quux -> true :(

正規表現の代わりに関数を使用することをお勧めしますか?

どうもありがとう!

4

2 に答える 2

1

これを試して:

^(\\/\\w+)+\\.\\w+(\\?(\\w+=[\\w\\d]+(&\\w+=[\\w\\d]+)+)+)*$

すでに特殊文字をエスケープしているので、Java で直接使用できます。ちなみに、/asd/asd.jsp?bar=baz&inga=42&quuxは有効な URL ではありません。

エスケープされていない正規表現:

^(\/\w+)+\.\w+(\?(\w+=[\w\d]+(&\w+=[\w\d]+)+)+)*$
于 2012-07-13T12:26:40.063 に答える