首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将字符串与正则表达式匹配的问题

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

Stack Overflow用户
提问于 2013-03-05 19:32:09
回答 2查看 69关注 0票数 1

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

这是我的代码:

代码语言:javascript
复制
$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

如果语句不像上面那样,那么它需要将房间和pc数组恢复为NA和其他。

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

例如:

g22-smartboard.roundhay.local

该软件仍然试图获得个人电脑号码,尽管它的剂量匹配我的正则表达式。然而,在我的测试PC上,计算机名叫乔希-PC,它确实回到了默认信息上。

我已经测试了我的正则表达式,每当名称以G或F开头时,它似乎都是正确的。

我需要它专门与这些要求相匹配:

  • 第一个字母是G或F
  • 然后0-9中的一位或两位数字
  • 然后.
  • 然后任意数量的字母a-z
  • 然后.
  • 然后字母PC
  • 然后0-9中的一位或两位数字
  • 然后任何事

我试过各种各样的方法让它起作用,但我只是不太理解regex。我查过了,但太让人费解了。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-03-05 19:41:07

正则表达式:

代码语言:javascript
复制
/[g|f]\d{1,2}-[a-z]+-pc\d{1,2}.+/i

应该行得通。我使用http://gskinner.com/RegExr/构建表达式。

票数 1
EN

Stack Overflow用户

发布于 2013-03-05 19:41:09

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

regex的一个重要资源是http://gskinner.com/RegExr/

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15232508

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档