5

サブドメインのドメイン名を識別できる必要があります。

例:

すべての泥棒について、私はexample.co/ example.com/ example.org///などだけを一致させる必要がありますexample.co.ukexample.com.auexample.gov.us

www.example.co
www.first.example.co
first.example.co
second.first.example.co
no.matter.how.many.example.co
first.example.co.uk
second.first.example.co.uk
no.matter.how.many.example.co.uk
first.example.org
second.first.example.org
no.matter.how.many.example.org
first.example.gov.uk
second.first.example.gov.uk
no.matter.how.many.example.gov.uk

私は一日中正規表現で遊んでいて、一日中何かをグーグルで検索していますが、それでも何かを見つけることができないようです。

Edit2:t.coのような非常に奇妙なケースで失敗する可能性のある正規表現を好み、すべてのTLDをリストし、リストしなかったものをリストしますが、失敗すると予測され、必要以上に一致する可能性があります。これはあなたが選ぶオプションではありませんか?

更新:選択した回答をガイドとして使用して、私に代わって仕事をするこの正規表現を作成しました。

/([0-9a-z-]{2,}\.[0-9a-z-]{2,3}\.[0-9a-z-]{2,3}|[0-9a-z-]{2,}\.[0-9a-z-]{2,3})$/i

完璧ではないかもしれませんが、今のところ失敗するケースはありません。

4

3 に答える 3

6

これは一致します:

([0-9A-Za-z]{2,}\.[0-9A-Za-z]{2,3}\.[0-9A-Za-z]{2,3}|[0-9A-Za-z]{2,}\.[0-9A-Za-z]{2,3})$

に限って:

  1. 各行の終わりに余分なスペースはありません
  2. 使用されるすべてのドメイン コードは、2 文字または 3 文字の短いものです。.info のような長いドメイン コードでは機能しません。

基本的には、次の 2 つのいずれかに一致します。

  1. 2 文字以上の単語:ドット:2文字または 3 文字 word:ドット:2 文字または 3 文字 word:行末
  2. 2 文字以上の単語:ドット: 2 文字または 3 文字 word:行末

短縮版:

(\w{2,}\.\w{2,3}\.\w{2,3}|\w{2,}\.\w{2,3})$

行全体にのみ一致させたい場合は、先頭に ^ を追加します

これは私がそれをテストした方法です:

ここに画像の説明を入力

于 2012-10-07T20:12:38.393 に答える
5

完全に正しいマッチャーが必要な場合は、正規表現は適していません。

なんで?

  • これらは両方とも有効なドメイン + TLD であるため: goo.gl, t.co.

  • これらはどちらでもないため (TLD のみ): com.au, co.uk.

上記のすべてのケースを適切に処理する正規表現を作成しても、有効な TLD を列挙するだけであり、そもそも正規表現を使用する目的が無効になります。

代わりに、現在の TLD のリストを作成/取得して、どれが存在するかを確認し、その前に最初のセグメントを追加します。

于 2012-10-07T20:11:59.733 に答える
0

これは何かの役に立つかもしれません。これにより、ドット表記に分割されます。後は分割するだけの簡単な作業です。
[^/:"]*\.[^/:"]*

于 2015-12-15T20:37:06.913 に答える