2

次の基準を完全に満たす有効なドメイン名の正規表現はどのようにする必要がありますか。

  1. 各ラベル 最大 63 文字 最小 1 文字
  2. 数字、文字、および「-」が含まれていますが、
  3. 「-」で開始および終了することはできません
  4. ドメイン名の最大長 255 文字 最小 1.

例えば

有効な組み合わせの一部:

a
a.com
aa-bb.b

私はこれを作成しました^(([a-z0-9]){1,63}\.?){1,255}$

しかし、現在、必要に応じて「-」部分を検証していません(欠落しています)

何か方法はありますか?

私が間違っている場合は、私を修正してください。

4

8 に答える 8

3

'.' で終わる必要があります。:ここで私は解決策を見つけました

"^(((([A-Za-z0-9]+){1,63}\.)|(([A-Za-z0-9]+(\-)+[A-Za-z0-9]+){1,63}\.))+){1,255}$"
于 2013-12-08T13:58:32.927 に答える
2

この式はすべての要件を満たす必要があります。 ^(?=.{1,255}$)(?!-)[A-Za-z0-9\-]{1,63}(\.[A-Za-z0-9\-]{1,63})*\.?(?<!-)$

  • 総文字長に先読みを使用
  • ドメインはオプションで.
于 2018-08-29T16:59:54.317 に答える
1

多分これ:

^(([a-zA-Z0-9\-]{1,63}\.?)+(\-[a-zA-Z0-9]+)){1,255}$
于 2013-10-31T11:33:10.840 に答える
0

| を使用します。RE の演算子の後に「-」が続きます..リテラル「-」を \ でエスケープするようにしてください

于 2013-10-31T11:25:44.537 に答える
0

ドメイン名の解析に正規表現を使用しないでください。 urllib.parseを使用してください。

HTML で有効なドメイン名を見つける必要がある場合は、ページのテキストを正規表現で分割し、[ <>]結果の各文字列を urllib.parse で解析します。

于 2013-10-31T11:23:20.340 に答える
-1

これを試して:

^(([a-z0-9]\-*[a-z0-9]*){1,63}\.?){1,255}$
于 2013-10-31T11:23:33.143 に答える