0

次のもので構成される必要があるドメイン名に一致するための、適切で明確な正規表現は何ですか?

  • 英語のアルファベットと数字のみ
  • ドメイン名内で有効で確実に処理されるスペースまたはその他の区切り文字を含める

明確にするために、これはドメイン名を検証するためのものです。インターネット コミュニティではドメイン名の国際化をサポートする動きがありますが、私はこれについてかなりの調査を行い、説明をかなり単純にするために、現代の英国英語の文字セットの一部である文字を含むドメイン名のみを使用しました。 (番号を含む) は、ドメイン ネーム システム (DNS) によって確実に処理されます。私は国際化を禁止したいという願望を示しているわけではありません - 私はキャリアの中で反対のことをするために多くの仕事をしてきました!


これに答えるために、私が探していたのはこのようなものです(テスト済みで動作します)。申し訳ありませんが、元の質問は私がやろうとしていることについて十分に明確ではありませんでしたが、コミュニティにこの回答を提供するのに役立った提案に賛成しました:

^[\w- .]*$

  • '\w' = [a-zA-Z0-9_] の省略形
  • 「-.」= '-'、' '、'.' を許可
  • アスタリスク = 前の文字の 0 回以上
4

2 に答える 2

3

これを使用できます:

(?i)[a-z0-9\p{Z}]

ここで、\p{Z}は「すべての区切り文字」クラスとiignore-caseオプションです。

于 2012-11-26T23:31:22.460 に答える
2

[a-zA-Z\d\s\p{P}]+最も簡単な解決策として使用できます。または、非ユニコードソリューションを使用してください>>

POSIXは文字クラス[:...:]を定義しますが、すべての正規表現エンジンがそれらをサポートしているわけではありません。
しかし、代替セットを使用することができます...

[:alnum:]   [A-Za-z0-9]                            Alphanumeric characters
[:space:]   [ \t\r\n\v\f]                          Whitespace   characters
[:punct:]   [\]\[!"#$%&'()*+,./:;<=>?@\^_`{|}~-]   Punctuation  characters

だからそれらを一緒にするとあなたは得るでしょう

^[A-Za-z0-9 \t\r\n\v\f\]\[!"#$%&'()*+,./:;<=>?@\^_`{|}~-]+$

このようにして、一致するものと一致しないものを確認できます。\一部の文字は、エスケープしないと意味が異なるため、エスケープされることに注意してください。

于 2012-11-26T23:49:55.220 に答える