Проблемы сопоставления строки с регулярным выражением
Я создаю программное обеспечение для интрасети и для определения номера комнаты и компьютера, на котором находится компьютер, я использую массив серверов REMOTE_HOST.
Вот мой код:
$hostname = $_SERVER['REMOTE_HOST'];
//Check to see if the computer name is compatible with room auto-detect
if (preg_match("/G|F\d{1,2}-.*?-PC\d{1,2}.*?/i", $hostname)) {
$room = explode("-", $hostname);
$pc = explode(".", $room[2]);
} else {
$pc[0] = "NA";
$room[0] = "other";
}
Эта оценка должна быть истинной, если имена компьютеров выглядят примерно так:
g22-dell-pc23.roundhay.local
f48-lenovo-pc02.roundhay.local
g6-asus-pc18.roundhay.local
Если оператор не такой, как указано выше, он должен вернуть массив комнаты и ПК в NA и Other.
Я могу извлечь номер комнаты и компьютер успешно, но когда компьютер с нестандартным именем использует программное обеспечение, он все еще пытается извлечь информацию, и программное обеспечение не удается, потому что у него нет информации, чтобы продолжить работу.
Например:
g22-smartboard.roundhay.local
Программное обеспечение все еще пытается получить номер ПК, даже если он не соответствует моему регулярному выражению. Однако на моем тестовом ПК с именем JOSH-PC он возвращается к информации по умолчанию.
Я проверил свое регулярное выражение, и оно кажется верным всякий раз, когда имя начинается с буквы G или F.
Мне нужно, чтобы он соответствовал конкретно этим требованиям:
- Первая буква G или F
- Тогда одна или две цифры от 0 до 9
- Затем -
- Тогда любое количество букв А-Я
- Затем -
- Тогда буквы ПК
- Тогда одна или две цифры от 0 до 9
- Тогда что-нибудь
Я попробовал все виды, чтобы заставить это работать, но я просто не понимаю регулярное выражение правильно. Я искал это, но это просто слишком запутанно.
2 ответа
Регулярное выражение:
/[g|f]\d{1,2}-[a-z]+-pc\d{1,2}.+/i
Должно сработать. Я использую http://gskinner.com/RegExr/ для создания выражений.
Попробуйте это RegEx [G|F]\d{1,2}-[a-z]+-pc\d{1,2}.+
Также отличным ресурсом для регулярных выражений является http://gskinner.com/RegExr/