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。您可以根據需要修改代碼段。
添加回答
舉報