为了账号安全,请及时绑定邮箱和手机立即绑定

有没有办法解析出计算机名

有没有办法解析出计算机名

沧海一幻觉 2023-03-24 15:24:12
我有一些代码,但我发现它可以在 90% 的计算机上运行。这是专有名称: CN=2016-10-05T12:19:16-05:00{393DA5A5-4EEF-4394-90F7-CBD0D2F20CC9},CN= Computer01-T2 ,OU=Product,OU=Workstations,OU=KDUYA, DC=时间,DC=本地我要做的是仅解析 ComputerName。我们使用的 27 个 OU 中的 3 个使用 3 个字母的名称,而不是所有其他站点使用的 5 个。我一直在用头撞墙,寻求帮助和/或指导。观看一些关于正则表达式的视频了解基础知识,但仍在处理像这样更复杂的事情。这是我所拥有的。任何建议或帮助将不胜感激。let str = "CN=2016-10-05T12:19:16-05:00{393DA5A5-4EEF-4394-90F7-CBD0D2F20CC9},CN=Computer01-T2,OU=Product,OU=Workstations,OU=KDUYA,DC=time,DC=local";str = str.substring(70, str.length -53);console.log(str);+
查看完整描述

2 回答

?
摇曳的蔷薇

TA贡献1793条经验 获得超6个赞

我会使用正则表达式:


let str = "CN=2016-10-05T12:19:16-05:00{393DA5A5-4EEF-4394-90F7-CBD0D2F20CC9},CN=Computer01-T2,OU=Product,OU=Workstations,OU=KDUYA,DC=time,DC=local";

let myRegexp = /^[^,]+,CN=([^,]+)/;

let match = myRegexp.exec(str);


console.log(match[1]); // Computer01-T2

/ ^[^,]+,CN=([^,]+)/ 部分表示从字符串开头开始寻找匹配项


" start here|CN=2016-10-05T12:19:16-05:00{393DA5A5-4EEF-4394-90F7-CBD0D2F20CC9},CN=Computer01-T2,OU=Product,OU=Workstations,OU=KDUYA,DC=time, DC=本地”


/^ [^,]+,CN=([^,]+)/ 部分表示匹配除逗号以外的任何字符


" CN=2016-10-05T12:19:16-05:00{393DA5A5-4EEF-4394-90F7-CBD0D2F20CC9},CN=Computer01-T2,OU=Product,OU=Workstations,OU=KDUYA,DC=time, DC=本地”


/^[^,] +,CN=([^,]+)/ 部分意味着匹配尽可能多的非逗号,在这种情况下,尽可能多地匹配一行中的字符。


“ CN=2016-10-05T12:19:16-05:00{393DA5A5-4EEF-4394-90F7-CBD0D2F20CC9},CN=Computer01-T2,OU=Product,OU=Workstations,OU=KDUYA,DC=time,DC=local”


/^[^,]+ ,CN=([^,]+)/ 部分表示精确匹配一个字符串:,CN=


“ CN=2016-10-05T12:19:16-05:00{393DA5A5-4EEF-4394-90F7-CBD0D2F20CC9},CN=Computer01-T2,OU=Product,OU=Workstations,OU=KDUYA,DC=time,DC=local”


/^[^,]+,CN= ([^,]+ )/ 括号表示存储字符串的匹配部分,以便我们可以获得它的值,也就是“匹配组”,并且会包含计算机名称部分在这种情况下的字符串。


/^[^,]+,CN=( [^,]+)/ 部分意味着尽可能多地匹配一行中的非逗号字符。


“ CN=2016-10-05T12:19:16-05:00{393DA5A5-4EEF-4394-90F7-CBD0D2F20CC9},CN=Computer01-T2,OU=产品,OU=工作站,OU=KDUYA,DC=时间,DC=本地”


正如您从帖子的评论中看到的那样,您可以通过多种不同的方式构建正则表达式。我更喜欢将我的匹配锚定到我正在解析的字符串的开头,也就是 / ^[^,]+,CN=([^,]+)/ 部分。


regex101 网站是试验和学习正则表达式的好地方。


此链接使用您的示例字符串和我在此答案中使用的正则表达式预填充该站点: https: //regex101.com/r/wM8ejj/1/


查看完整回答
反对 回复 2023-03-24
?
慕虎7371278

TA贡献1802条经验 获得超4个赞

使用您提供的字符串,您可以使用此代码段


let str = "CN=2016-10-05T12:19:16-05:00{393DA5A5-4EEF-4394-90F7-CBD0D2F20CC9},CN=Computer01-T2,OU=Product,OU=Workstations,OU=KDUYA,DC=time,DC=local";


let cName = str.split(',').find(e => e.indexOf('Computer') != -1).split('=')[1];


console.log(cName);

这假设您所有的计算机名称都将包含关键字Computer。您可以根据需要修改代码段。


查看完整回答
反对 回复 2023-03-24
  • 2 回答
  • 0 关注
  • 116 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号