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/

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。您可以根据需要修改代码段。
添加回答
举报