2010-09-16 95 views
0

我試圖匹配類似於foo-bar3-vm.companyname.local的主機名。 foo-bar3的部分可以是字母,數字和連字符的任意組合,但我想確保它以-vm.companyname.local結尾。主機名的正則表達式

我試圖使用/^[a-zA-Z0-9\-]*[vmVM]*\.companynanme\.local$/,但似乎匹配以.companyname.local結尾的任何內容。

我的正則表達式有什麼問題?

回答

2

[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$/

編輯:哎呀,錯字。

+0

太棒了,謝謝。 – avaleske 2010-09-16 20:29:49

-1

試試這個:

/^[a-zA-Z0-9\-]*[-]{1}[vV]{1}[mM]{1}\.companynanme\.local$/ 

{1}量詞將確保你有一個連字符-,一個v接着一個m

*量詞意味着您可以有零個或多個出現的[]表達式。因此,以.companyname.local結尾的任何內容都將與您的問題中發佈的正則表達式匹配。

+0

的量詞'{1}'任何正則表達式原子是多餘的。 – msw 2010-09-16 01:42:03

+0

我知道這有點晚了,但我覺得前面的評論者沒有足夠強調:** {1}'完全沒有效果。**'[ - ] {1} [vV] {1} [mM] {1}'與[ - ] [vV] [mM]'完全相同。 – 2013-10-12 07:36:01

1

*表示「零次或多次」,並且[...]表示來自該組的任何字符。所以[vmVM]*表示「v,m,V或M中的任何一個重複零次或多次」。

你真正想要的是:

/^[a-zA-Z0-9\-]*-vm\.companynanme\.local$/i 

說明「我」在結尾的意思是「不區分大小寫」