這是一塊很大的正則表達式(PHP)的:正則表達式:每一個字母子域,除了WWW
((?:[0-9A-z_-]+))
我用它來有效的一個子域,但我願意接受所有的子域除了「 www「
如何在有字母數字」選擇器「的情況下執行此操作?
編輯:最後使用(\b(?!www\b)(?:[0-9A-Za-z_-]+))
,感謝Tim和ATS
這是一塊很大的正則表達式(PHP)的:正則表達式:每一個字母子域,除了WWW
((?:[0-9A-z_-]+))
我用它來有效的一個子域,但我願意接受所有的子域除了「 www「
如何在有字母數字」選擇器「的情況下執行此操作?
編輯:最後使用(\b(?!www\b)(?:[0-9A-Za-z_-]+))
,感謝Tim和ATS
試試這個:
((?!www)(?:[0-9A-Za-z_-]+))
這使用排除模式說 「不WWW」。
這假定其餘的正則表達式(如你所寫,它是一個更大的表達式的一部分)確保這部分包含只是一個可能的子域。所以這部分應該匹配子域的全部,但不應該檢查它是否全部匹配。
你還需要做什麼,我不能(因爲我不知道你在用什麼),是www
後插入適當的邊界檢測。可能\b
就足夠了。
謝謝,它的工作! (只能在9分鐘內接受你的回答) –
沒問題,我可以等:) – SQB
不是說這個域名不能包含www?如果是testwwwttest.blah會怎麼樣? – Srb1313711
首先,該正則表達式不正確,應該是((?:[0-9A-Za-z_-]+))
(或簡單地([\w-]+)
-非捕獲組是不必要的)。 Z
和a
之間有一些你不想匹配的字符。
其次,使用negative lookahead assertion以確保您匹配的字符串不是www
。爲了確保我們不只是考慮的子匹配ww
從www
(或不匹配wwwwwhat.sgoing.on
),可能有必要增加word boundary anchors,根據上下文:
\b(?!www\b)([\w-]+)
工作正常,謝謝你的解釋,但它接受多個子域(subsubdomain,subsubsubdomain ...),我只是一個有效的 –
好吧,我用了以下內容:(\ b(?!www \ b)(?:[ 0-9A-Za-z _-] +))不接受點 –
這對我的作品來驗證子域。
^([a-z0-9]+([\-a-z0-9]*[a-z0-9]+)?\.){0,}([a-z0-9]+([\-a-z0-9]*[a-z0-9]+)?){1,63}(\.[a-z0-9]{2,7})+$
這不會排除匹配中的'www',這是明確要求的**。 – SQB
嘗試'(?!www)'。 [更多信息](http://www.regular-expressions.info/completelines.html)(參見'查找包含或不包含某些單詞的行'段落) – Laoujin
_幾乎_但不完全是[Regex for ANY除「www」之外的字符串? (子域)](http://stackoverflow.com/q/7099397/2936460)。 – SQB