2

注:これは、正規表現のPHPフレーバーに関する理論的な質問であり、PHPでの検証に関する実際的な質問ではありません。より良い例がないため、私は単にドメイン名を使用しています。

http://www.「セカンドレベルドメイン」とは、http://またはと.com(.co、.info、.etc)の間に配置される文字、数字、ピリオド記号、および/またはダッシュの組み合わせを指します。

英語版のラテンアルファベットを使用するセカンドレベルドメインにのみ興味があります。

このパターン:

[A-Za-z0-9.-]+

stackoverflow、StackOverflow、stackoverflow.co(stackoverflow.co.ukなど)、stack-overflow、stackoverflow123などの有効なドメイン名と一致します。

ただし、同じパターンは、stack ... overflow、stack --- over--flow、........、--------、または。のようなものにも一致します。と -。

ノードで複数回使用できる場合でも、ピリオドの記号とダッシュを示すために、そのパターンをどのように書き直すことができますか。

  • 他の記号なしでは使用できません、
  • 2回以上並べて配置することはできません。
  • ノードの最初または最後に配置することはできませんか?

前もって感謝します!

4

2 に答える 2

2

私はこのような何かがトリックをするべきだと思います:

^([a-zA-Z0-9]+[.-])*[a-zA-Z0-9]+$

これがやろうとしているのは

文字列の先頭から開始し、末尾で終了します

1つ以上の文字または数字の
後にドットまたはハイフンが続く

上記のグループが0回以上繰り返された

1つ以上の文字または数字が続く

于 2013-02-14T16:04:07.690 に答える
1

2つの連続を許可しない正規表現を探していると仮定します。または-次を使用できます:

^[a-zA-Z0-9]+([-.][a-zA-Z0-9]+)*$

正規表現のデモ

于 2013-02-14T16:03:07.760 に答える