我試圖匹配類似於foo-bar3-vm.companyname.local
的主機名。 foo-bar3
的部分可以是字母,數字和連字符的任意組合,但我想確保它以-vm.companyname.local
結尾。主機名的正則表達式
我試圖使用/^[a-zA-Z0-9\-]*[vmVM]*\.companynanme\.local$/
,但似乎匹配以.companyname.local
結尾的任何內容。
我的正則表達式有什麼問題?
我試圖匹配類似於foo-bar3-vm.companyname.local
的主機名。 foo-bar3
的部分可以是字母,數字和連字符的任意組合,但我想確保它以-vm.companyname.local
結尾。主機名的正則表達式
我試圖使用/^[a-zA-Z0-9\-]*[vmVM]*\.companynanme\.local$/
,但似乎匹配以.companyname.local
結尾的任何內容。
我的正則表達式有什麼問題?
的[vmVM]*
部分意味着匹配的字母V,M,V,或M零次或多次,所以零次重複會給你在短短.companyname.local
結尾的字符串。如果你想成爲限制性你的問題使得它聽起來,只需將其更改爲類似:
/^[a-zA-Z0-9\-]*\-[vV][mM]\.companyname\.local$/
或者,如果你想至少一個在主機名字母/數字,是這樣的:
/^[a-zA-Z0-9][a-zA-Z0-9\-]*\-[vV][mM]\.companyname\.local$/
編輯:哎呀,錯字。
試試這個:
/^[a-zA-Z0-9\-]*[-]{1}[vV]{1}[mM]{1}\.companynanme\.local$/
的{1}
量詞將確保你有一個連字符-
,一個v
接着一個m
。
*
量詞意味着您可以有零個或多個出現的[]
表達式。因此,以.companyname.local
結尾的任何內容都將與您的問題中發佈的正則表達式匹配。
的量詞'{1}'任何正則表達式原子是多餘的。 – msw 2010-09-16 01:42:03
我知道這有點晚了,但我覺得前面的評論者沒有足夠強調:** {1}'完全沒有效果。**'[ - ] {1} [vV] {1} [mM] {1}'與[ - ] [vV] [mM]'完全相同。 – 2013-10-12 07:36:01
*
表示「零次或多次」,並且[...]
表示來自該組的任何字符。所以[vmVM]*
表示「v,m,V或M中的任何一個重複零次或多次」。
你真正想要的是:
/^[a-zA-Z0-9\-]*-vm\.companynanme\.local$/i
說明「我」在結尾的意思是「不區分大小寫」
太棒了,謝謝。 – avaleske 2010-09-16 20:29:49