6

私はこれを見つけることができず、私が試みていることはうまくいきません。

次の条件を満たすドメインのみを照合したい:

  • プロトコルを含まない (http、https、ftp)
  • オプションでサブドメインを含める
  • ハイフンで始めないでください。ただし、ハイフンを含めることはできます

一致するドメインの例:

  • domain.com
  • example.domain.com
  • example.domain-hyphen.com
  • www.domain.com
  • たとえば .museum

一致しないドメインの例:

  • http://example.com
  • サブドメイン.-example.com
  • example.com/parameter
  • example.com?なんでも
  • www.subdomain.domain.com

私が現在持っているもの:

/^(?!:\/\/)(^[a-zA-Z0-9])?.[a-zA-Z0-9-]+\.[a-zA-Z]{2,6}?$/i

プロトコルに一致せず、ドメイン内のハイフンを許可し、TLD の後の末尾の文字を許可せず、サブドメインを許可しています (ただし 1 文字のみ)。

www.subdomain.domain.comを許可せず、先頭のハイフンを許可しないで、任意の長さのサブドメインを許可する必要があります。

4

4 に答える 4

15

試す

/^(?!:\/\/)([a-zA-Z0-9]+\.)?[a-zA-Z0-9][a-zA-Z0-9-]+\.[a-zA-Z]{2,6}?$/i
于 2013-05-09T14:17:09.467 に答える
4

あなたの正規表現を分析しましょう:

^(?!:\/\/)

これはかなり役に立たない。正規表現の意図を示していますが、次の文字にスラッシュを含めることは許可されていないため、不要です。

(^[a-zA-Z0-9])?.

私はあなたがこれを望んでいたと思います^([a-zA-Z0-9]+\.)?。ドットはエスケープされておらず、文字列の先頭にオプションの文字が 1 つだけ先行します。

[a-zA-Z0-9-]+

これがハイフンで始まらないようにする場合は、否定先読みを使用するか、[a-zA-Z0-9][a-zA-Z0-9-]*.

\.[a-zA-Z]{2,6}?

ここで疑問符が何をするのかわかりません。後戻りはありませんよね?

/i

これにより、明示的[a-zA-Z]なものは役に立たなくなります。1つで十分です。iまたは、フラグを省略します。

これらすべてを一緒にすると、最終的には

/^([a-z0-9]+\.)?[a-z0-9][a-z0-9-]*\.[a-z]{2,6}$/i
于 2013-05-09T14:24:20.510 に答える