Регулярное выражение для имени хоста - PullRequest
0 голосов
/ 16 сентября 2010

Я пытаюсь сопоставить имя хоста, подобное foo-bar3-vm.companyname.local. Часть, которая является foo-bar3, может быть любой комбинацией букв, цифр и дефисов, но я хочу, чтобы она заканчивалась на -vm.companyname.local.

Я пытался использовать /^[a-zA-Z0-9\-]*[vmVM]*\.companynanme\.local$/, но это похоже на то, что заканчивается на .companyname.local.

Что не так с моим регулярным выражением?

Ответы [ 3 ]

2 голосов
/ 16 сентября 2010

Часть [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$/

Редактировать: Упс, опечатка.

1 голос
/ 16 сентября 2010

* означает «ноль или более раз», а [...] означает любой символ из этой группы. Так [vmVM]* означает «любой из v, m, V или M, повторенный ноль или более раз».

То, что вы на самом деле хотите, это:

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

Обратите внимание, что «i» на конце означает «без учета регистра»

0 голосов
/ 16 сентября 2010

Попробуйте:

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

Квантор {1} обеспечит наличие дефиса -, одного v, за которым следует один m.

The *Квантор 1010 * означает, что вы можете иметь ноль или более вхождений выражения [].Следовательно, все, что заканчивается на .companyname.local, будет соответствовать регулярному выражению, опубликованному в вашем вопросе.

...