1

以下のパターンで色々と と のバリエーションを試してみました( )[ ]、目的を達成できませんでした。

$pattern = '/^http:\/\/www.mydomain.p.ht\/?[\p{L}\p{N}\-]{0,36}\/?[\p{L}\p{N}\-]{0,51}\/?[\p{L}\p{N}\-]{0,101}$/';

私の目的は、必要なURL構造に一致させることです

  1. http://www.mydomain.p.ht
  2. 0 または 1 つ/のスラッシュ文字
  3. utf-8 対応の文字、数字、およびダッシュ文字。全長は最小 0、最大 36
  4. 0 または 1 つ/のスラッシュ文字
  5. utf-8 対応の文字、数字、およびダッシュ文字。全長は最小0、最大51
  6. 0 または 1 つ/のスラッシュ文字
  7. utf-8 対応の文字、数字、およびダッシュ文字。/全体の長さは最小 0、最大 101です。最後にスラッシュ文字があってはなりません。

現在はhttp://www.mydomain.p.ht/1234561-234561234561234-56123456123456şğ一致していますが、1234561-234561234561234-56123456123456şğpart が 36 文字を超えているため一致しないはずです。

私のパターンを修正してもらえますか?

4

1 に答える 1

2

正規表現自体を修正するだけです

/^http:\/\/www.mydomain.p.ht(\/|\/[\p{L}\p{N}\-]{1,36}(\/|\/[\p{L}\p{N}\-]{1,51}(\/|\/[\p{L}\p{N}\-]{1,101})?)?)?$/

問題は、/オプションを作成すると、正規表現が複数の [\p{L}\p{N}-] グループを組み合わせて、36 文字または 51 文字などに一致するようになることです。私はあなたが持つことができないという1つの仮定をしhttp://www.mydomain.p.ht//1234561-234561234561234-56123456123456şğました、二重に注意してください/

追加情報については、 http://www.regular-expressions.info/を強くお勧めします

于 2013-04-11T15:40:53.670 に答える