2012-07-28 75 views
0

我有一個域名服務器下面這個簡單的正則表達式:域名服務器的正則表達式的改進

^[a-zA-Z0-9]+\.[a-zA-Z0-9]+\.[a-zA-Z0-9\.]+ 

我想通過

  • 限制的數量,以提高這一點。在最後部分,以最大的1(以 允許.co.uk,但限制無效域)
  • 沒有讓第一部分是WWW

任何人都可以提供一些幫助?

+0

爲什麼要防止域名所有者在其DNS服務器名稱中使用www? – tripleee 2012-07-28 15:21:46

+0

@tripleee名稱服務器是www.domain.com嗎?我的印象是他們無法做到的。 – Alex 2012-07-28 16:51:29

+1

任何名稱服務器名稱都沒有特別的限制。使用這樣的名稱會有點不明智和不合常規,但沒有理由不允許這樣做,而且它可能對兩個域名所有者同意爲對方運行名稱服務器確實有用。 – tripleee 2012-07-28 16:52:27

回答

1

^([a-zA-Z0-9]+|[a-zA-Z0-9]*\*[a-zA-Z0-9]*)(\.[a-zA-Z0-9]+){2,3}$將匹配:

  • 3或4的部件由.
  • 每個組件由一個或多個字母數字字符
  • 第一組件也可含有至多一個*
的分離

不允許第一部分是www是凌亂的做同樣的正則表達式,並可能更好地做一個pr電子郵件/後續步驟,相當於if (!string.startsWith("www")),無論您使用何種方式。

+1

@Alex我可能誤解了你,但是如果你想讓它匹配一個類似'* .whatever.co.uk'的字符串,你可以在第一個字符類中添加'*':'[a-zA-Z0-9 *]'。請注意,因爲'*'在類內部,所以不需要'\'。 – verdesmarald 2012-07-28 13:50:06

+0

我該如何將*限制在第一部分中的最大值1? – Alex 2012-07-28 13:50:57

+1

'(\ * | [a-zA-Z0-9] +)' – verdesmarald 2012-07-28 13:51:28