2011-07-26 10 views
0

私はドメインの特定の団体を限定しようとしていますが、他の団体を許可しようとしています。たとえば、正規表現は、これはとwww.abc.co.ukは許可www.abcdef.co.uk、www.abc-def.co.ukなどabc.co.ukを許可しませんこの正規表現をよりうまく実行できますか?

^(www\.)?(?!abc\.co)[a-zA-Z\-]+\.(co|org)\.uk$ 

ですしかしこれがもっとうまくいくかどうか疑問に思っていますか?ここ

EDITは、サブドメインを許可同じ正規表現の一例です。

^(www\.)?([a-zA-Z\-]+\.)?(?!abc\.co)[0-9a-zA-Z\-]+\.(co|org)\.uk$ 
+1

特に許可して拒否したいものは何ですか? – Gareth

+2

あなたは 'abC.co.uk'を許可したくないと思っているので、'/i'か '(?i:...)'を使ってください。 – Qtax

+0

@Gareth - abc.co.uk以外のすべてのドメインバリエーションを許可したい – PeanutsMonkey

答えて

1

あなたがabc.co.ukまたはabc.org.ukで終わっていないものを一致させたいようです。

(?<!abc.(co|org).uk)$ 

これは、与えられた正規表現で終わっていないことを主張するために、入力の端から後ろの負の外観を使用しています。それが正しいと仮定すると、
は、ここにいることを表して正規表現です。

+0

否定的な先読みとは対照的に、否定的な視覚化を行う理由がありますか? – PeanutsMonkey

+0

重要なことは、入力が* end *であるべきではないので、アンカーとして入力の最後を使用することです。この正規表現は「終わりに達したら、前の文字を確認する」と言います。 – Bohemian

+0

ありがとうございます。しかし、私はあなたがabc.co.ukのような文字列で始まっているかどうかを確認したいと思っていました。もしそれが残りの式を実行しなければ http://gskinner.com/RegExr/であなたの提案を試してみました。それは動作していないようです。 – PeanutsMonkey

関連する問題