将字符串匹配到正则表达式的问题



我正在创建一些内部网软件,为了确定计算机所在的房间号和PC号,我使用REMOTE_HOST服务器数组。

下面是我的代码:
$hostname = $_SERVER['REMOTE_HOST'];
//Check to see if the computer name is compatible with room auto-detect
if (preg_match("/G|Fd{1,2}-.*?-PCd{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

如果语句不是如上所述,则需要将room和pc数组还原为NA和Other。

我可以成功提取房间号码和PC,但当具有非标准名称的PC使用该软件时,它仍然试图提取信息,软件失败,因为它没有信息可继续。

例如:

g22-smartboard.roundhay.local

软件仍然试图获得PC号码,即使它不匹配我的正则表达式。但是,在我的测试PC上,计算机名称为JOSH-PC,它确实会恢复到默认信息。

我已经测试了我的正则表达式,无论名称以G或f开头,它似乎都是正确的

我需要它特别符合这些要求:

  • 首字母为G或F
  • 0 - 9中的一个或两个数字
  • 则a -
  • 然后任意数量的字母a-z
  • 则a -
  • 然后字母PC
  • 0 - 9中的一个或两个数字
  • 然后任何

我已经尝试了各种各样的工作,但我只是不理解正则表达式正确。

正则表达式

/[g|f]d{1,2}-[a-z]+-pcd{1,2}.+/i

应该工作。我使用http://gskinner.com/RegExr/构建表达式

试试这个RegEx [G|F]d{1,2}-[a-z]+-pcd{1,2}.+

还有一个很好的regex资源是http://gskinner.com/RegExr/

相关内容

  • 没有找到相关文章

最新更新