0

のようなものをキャッチしたいのですsomedomain.com/folder/pathが、のようなものはキャッチしたくありませんdomain.sub.other.com。私がこれまでに持っている正規表現はほぼ完成しています。マルチドメインの URL をふるいにかけないだけです。

^(.*)://(?!(.{2,3})\.(.*)(.{2,3})(.*)

複数の期間をふるい分ける方法はありますか?

4

2 に答える 2

0

の代わりに.{2,3}、次のようなものが必要です。[^.]{2,3}- これにより、その特定の一致からピリオドが除外されます (正規表現のこのコンテキストでは特別な意味がないため、エスケープする必要はありません)。全体として、次のようなものになります。

://[^.]+\.[^.]{2,3}(/.*)?

明らかに *.info のようなものを見逃していることを除いて....

于 2012-05-21T16:10:53.197 に答える
0

さまざまなテスト シナリオで機能するソリューションを見つけました。

^(.*)://([^.]+)\.([^(\?|/|\r|\n|\.)]+)((/|\?|$)+)(.*)$

ここで、最後のグループから 2 番目のグループは、潜在的なスラッシュ、疑問符、または文字列の末尾に対して一致し、その前のグループと連携して、「.」を含む一致を許可しません。

したがって、最終的な効果として、「domain.com」などの 2 つの部分からなるドメインを持つ URL のみが一致し、文字列の長さに制限はありません。

于 2012-05-23T20:05:23.827 に答える